如何在这个PHP数组中只访问特定的数组值


how do I access only specific array values in this PHP array

我从Apples APNS反馈服务中得到这个php数组:

array(4) { 
    [0]=> string(64) "abc123" 
    [1]=> string(64) "def456"
    [2]=> array(3) { 
            ["timestamp"]=> int(1426717247) ["length"]=> int(32) ["devtoken"]=> string(64) "xyz987" 
    }
    [3]=> array(3) { 
            ["timestamp"]=> int(1426717247) ["length"]=> int(32) ["devtoken"]=> string(64) "xyz987" 
    }
}

如何使用php对此数组进行循环,并仅构建包含"devtoken"项/值的数组元素的逗号分隔字符串?

更新:我一直在尝试使用内爆,这可能是可行的,但我最终使用的是基于Steve的答案,看起来如下:

$deldevidstring='';
foreach($feedback_tokens as $element){
    if(is_array($element) && isset($element['devtoken'])){
        $deldevidstring .= $element['devtoken'] .',' ;
    }
}
if(strlen(trim($deldevidstring)) > 0){
   echo trim("delete these... " . $deldevidstring, ',');
}

迭代数组并构建字符串:

$string='';
foreach($array as $element){
    if(isset($element['devtoken'])){
        $string .=',' . $element['devtoken'];
    }
}
echo trim($string, ',');

或者内爆过滤后的数组:

$string = implode(',', 
              array_filter(
                  array_map(
                      function($element){
                          return $element['devtoken']
                      }, 
                      $array
                  )
              )
          );

看看这个:

<?php
$str = "";
foreach($array as $arr)
{
    if(is_array($arr))
    {
        if(array_key_exists('devtoken', $arr))
        {
            $str = implode(",", $arr)."'n";
        }
    }
}
?>

假设您设置了$records=返回的数组:

$string = '';
foreach ($records as $record) {
    if (isset($array['devtoken'])) {
        $string .= $array['devtoken'] . ', ';
    }
}
$string = substr($string, 0, -2);
echo $string;

毫无疑问,有更优雅的方法可以做到这一点,但短期来看,这似乎很有效。

无需循环。使用PHP>=5.5.0:

$result = implode(',', array_column($array, 'devtoken'));

对于没有array_column:的早期版本

$result = implode(',', array_filter(array_map(function($v) { return $v['devtoken']; }, $array)));