2011-01-10 18 views
1

こんにちは
私は以下のコードがあるとします。Drupalの/ PHP - 配列内の特定の値を取得します

[taxonomy] => Array 
    (
     [118] => stdClass Object 
      (
       [tid] => 118 
       [vid] => 4 
       [name] => A 
       [description] => 
       [weight] => 4 
      ) 

     [150] => stdClass Object 
      (
       [tid] => 150 
       [vid] => 5 
       [name] => B 
       [description] => 
       [weight] => 0 
      ) 

    ) 

どのように私は誰かが私に提案をお願いでき、TID番号を取得し、他の人を除外することができますが?最初のレベルのキーとサブキー「TID」の値が同じであるので、あなた

+6

$ taxonomy [x] - > tidを使用できませんでしたか? – Savetheinternet

+1

配列はノードオブジェクトの一部です、そうですか?だから私はdrupalタグを追加しました。 – rik

+1

@rik質問にDrupalコンテキストを追加すると、何かが改善されます。これはPHPのみです。推測にタグを追加することは、おそらくベストプラクティスではありません。 –

答えて

2

あなたは「すべてのTIDの値を取得するために、分類は、配列$ ARRの鍵であり、あなたが例えば

、とTIDを取得することができます

$key = your key //the key for which you want fetch record 

    $arr['taxonomy'][$key]->tid; 

$result = array(); 
foreach($arr['taxonomy'] as $key=>$value) 
{ 
     $value = (array)$value; 
     if(array_key_exists('tid'), $value) 
    { 
      $result[] = $value['tid']; 
    } 
} 

print_r($result); 
+0

[118 ]は異なる用語/ノードのために動的に変化するので、この解決策を改善することができる。 –

+0

@Charles:はい、118は動的です。私は例を挙げました。 118を動的値で置き換えることができます。私はあなたの参照のための答えを編集させてください。 – Nik

+0

わかりにくい説明を申し訳ありませんが、実際には、配列内にtid値を取得したいのですが、その中にキー "tid"が見つかりましたか? –

0
$tids = array_keys($yourArray); 

おかげでこれが動作します。

+0

だからarray_keys()は118と150を返します...しかし、配列にキー= tidがあるかどうかをチェックしたい場合は、tid値を返します。 –

+0

array_keys()は値を挿入または省略しません。それはすべてのキーを返し、条件 "key = tid"はそれらのすべてに対して真です。サブセット(または1つだけ)のTIDだけを抽出したい場合は、 'array_intersect(array_keys($ yourArray)、$ yourTIDs)'を実行することができます。 – rik

+0

@Charles Yeung:上のように 'array_keys'を与え、' foreach'などの方法で配列キーをループし、 'if($ taxonomy [$ key] - > tid == $ key)'をチェックしてください。 – Spudley

0

チャールズ・ヤングと仮定すると、再要件は明確ではない、あなたは他の答え(Nikの場合)で分類法IDが動的であると言うと、同様に複数のタクソノミーノードがあるようだから、tidの値ですか?

同様に、あなたはキー=値かどうかを確認したいとRIKと言われ、私はあなたがそれで何を意味するかさっぱりだが、おそらくあなたはここに始めることができる...

$tid=array(); 

foreach($taxonomy as $key=>$value) { 
    $tid[]=$value->tid; 
} 

print_r($tid); 

これは与えますtid値の配列で、出力を制約するために条件を設定したい場合は自由に設定してください。問題はあなたの要件が明確でないという問題です。

+0

不明な点がありましたら残念ですが、この問題を考慮してください。配列にkey = tidが含まれているかどうかをチェックし、tidの値を返しますか?ありがとうございます –

関連する問題