2017-06-22 63 views
0

我有一个PHP数组,并在数组内是一个数值的另一个php对象的引用。PHP循环数组对象一次,还是通配符密钥?

我怎样才能访问这个数组中的元素而不知道数字ID(它可能是不同的每个数组)?

在下面的图像,我需要得到的数值内,像这样field_collection_item ....

$content['field_image_columns'][0]['entity']['field_collection_item'][133]['field_image'] 

对于第一个数组的键(0)我也做了以下...

$i = 0; 
    while($i <= 2) { 
     if(isset($content['field_image_columns'][$i])) { 
      print '<div class="column-' . $i . '">'; 

      foreach ($content['field_image_columns'][$i]['entity']['field_collection_item'] as $fcid => $values) { 
       // Print field values 
      } 

      print '</div>'; 
     } 
     $i++; 
    } 

为单个数组项目做一个foreach循环似乎是错误的 - 是否有一种方法,我应该用于此用例?

enter image description here

回答

1

您可以选择数组的第一个项目。比如用:

  1. 使用array_shift,但它会修改源阵列:

    $cur = array_shift($content['field_image_columns'][$i]['entity']['field_collection_item']); 
    print $cur['field_image']; 
    
  2. 获取数组键与array_keys和使用结果的第一个元素作为键

    $ks = array_keys($content['field_image_columns'][$i]['entity']['field_collection_item']); 
    print $content['field_image_columns'][$i]['entity']['field_collection_item'][$ks[0]]['field_image']; 
    
  3. 使用current功能:

    $cur = current($content['field_image_columns'][$i]['entity']['field_collection_item']); 
    print $cur['field_image']; 
    
+0

很好的答案,谢谢! – Collins

1

与大多数编程,还有相当,你能做到这一点的几种方法。如果一个foreach工作,那么它没有错,但它可能不是最好的方法。

// Get the current key from an array 
$key = key($array); 

如果您不需要密钥,那么您可以从数组中获取值。

// Get the current value from an array 
$value = current($array); 

这两个都会从数组中检索第一个键/值,假设您没有高级指针。

prev是所有数组函数,它们允许您在不知道内部事件的情况下操作数组。 http://php.net/manual/en/ref.array.php

+0

真棒!这就说得通了!谢谢:-) – Collins