2017-11-15 8 views
0

私はオブジェクトと配列の両方を含む次の配列を持っています。それぞれのキーに基づいて(オブジェクトごとに)特定の値だけを取得するにはどうすればよいですか? 私がテストしてみた配列が表示される(下記参照)が、必要に応じて、私は「名前」の値を分離することはできませんキーに基づく配列内のオブジェクトからのPHP表示値

私は名前の値を取得するには、次のコードを試してみました:。

case 'field_prgm_housing' : 
$node = 'field_color'; 
$tids = field_get_items('node', $node, $key, $node->language); 
$terms = taxonomy_term_load_multiple(array(), array('tid' => $tids)); 
$nameonly = $terms->[0]->name[0]; 
return = $nameonly; 
break;  
Colors (Array, 2 elements) 
    12 (Object) stdClass 
     tid (String, 2 characters) 12 
     vid (String, 1 characters) 3 
     name (String, 9 characters) Blue 
     description (String, 0 characters) 
     format (String, 13 characters) filtered_html 
     weight (String, 1 characters) 0 
     vocabulary_machine_name (String, 15 characters) colors 
     rdf_mapping (Array, 5 elements) 
     path (Array, 1 element) 
    13 (Object) stdClass 
     tid (String, 2 characters) 13 
     vid (String, 1 characters) 3 
     name (String, 8 characters) Green 
     description (String, 0 characters) 
     format (String, 13 characters) filtered_html 
     weight (String, 1 characters) 0 
     vocabulary_machine_name (String, 15 characters) colors 
     rdf_mapping (Array, 5 elements) 
     path (Array, 1 element) 
+1

アレイの出力が$ termsのvar_dumpである場合、これは$ terms [$ i] - > nameを動作させるはずです。 –

+1

'$ names = Array_column($ array、" name ")'これはあなたが探しているものです – Andreas

+0

@OfirBaruchこのケースでは、名前でなければ何が関連するキーでしょうか? – Sam

答えて

2
Try this 


    $node = 'field_color'; 
    $tids = field_get_items('node', $node, $key, $node->language); 
    $terms = taxonomy_term_load_multiple(array(), array('tid' => $tids)); 

    //loop all the values and get the require value 
    $name = array(); 
    foreach($terms as $term){ 
      $name[] = $term->name; 
    } 
    return $name; 
?意味すると仮定 $terms->[0]

$termsが配列であるので、あなたは次のように、あなたが取得したいのインデックスを指定してアクセスする必要が

+0

私はswitch文の中で動作しています。 – Sam

+0

ここに各エラーの貼り付け – kranthi

+0

予期しない 'foreach' – Sam

0

$terms[12], $terms[13] ...

その配列の要素はオブジェクトなので、フィールドを取得するには " - >"演算子を使用する必要があります。

だから、同じようにする必要があり:

$nameonly = $terms[12]->name; 
$nameonly = $terms[13]->name; 

それとも@kranthiが提案されているように、すべての配列項目を谷繰り返すことができます。

関連する問題