Cfpropertylist: 例による支援

作成日 2013年09月17日  ·  3コメント  ·  ソース: TECLIB/CFPropertyList

配列から選択したフィールドをプルする例を見つけようと精査しました。 キー名に基づいてフィールドをプルすることはできますが、PHPを使用してCFPを使用して配列から値をプルする方法を決定する際に問題が発生します。

どんな援助も大歓迎です。 これまでにライブラリが利用可能になってくれたことに感謝しています。ありがとうございます。

documentation hacktoberfest question

全てのコメント3件

やあ、
「配列から値をプルする」とはどういう意味かわかりません。 あなたが私にあなたの必要性を明確にすることができれば、たぶん私はあなたを助けることができます。

キー名に基づいてそれを行うことができる場合、配列のキーとして値を使用するために、array_flipを使用しようとしましたか?

申し訳ありませんが、適切に説明していませんでした。

エントリの配列があり、各エントリ内に別の配列とともに一連の定義がありました。 それはきれいではなく、それを回避するためのより良い方法がある可能性がありますが、これは私の解決方法でした:

$root = $plist->getValue(true);
$entries = $root->get('Entries');
foreach ($entries as $entry) {
  $topalias = $entry->get('versions')->getValue();
  foreach ($topalias as $subvalue) {
    $finalvalue = $subvalue->get('versionAliases')->getValue();
  }
  $versionalias = $finalvalue;
}

$ versionaliasは、私がその2番目の層の配列からプルしていたエントリでした。 繰り返しますが、きれいではありませんが、うまくいきました。

迅速な対応に感謝します。もっと効率的な方法があれば、ぜひ聞いてみてください。 ありがとう!

APIは現在のところ、選択したアプローチよりも効率的なアプローチはありません。 つまり、 $plistでの作業に関してです。 おそらくループを最適化することができます(最後の$entry最後の$finalvalueが本当に必要な場合を除く)。

そうは言っても、 $plist内をナビゲートするためのxPath / CSSセレクターのようなアプローチを実装することは可能です。 上記のループするものを$versionalias = $plist->find('versions:last/versionAliases:last')->getValue();変換するもの

これを解決するPRをマージさせていただきます;)

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

n8felton picture n8felton  ·  12コメント

gingerbeardman picture gingerbeardman  ·  9コメント

zrsmith92 picture zrsmith92  ·  5コメント

YannickGagnon picture YannickGagnon  ·  4コメント

richangel picture richangel  ·  3コメント