PHP 多维数组内爆?

PHP Multidimensional Array implode?

我有一个数组

'Somethings' => 
    array (
      'Something' => 
      array (
        0 => 
        array (
          '@att' => 
          array (
            'Code' => '0',
          ),
          'Fruit' => 'Apple',
        ),
        1 => 
        array (
          '@att' => 
          array (
            'Code' => '3',
          ),
          'Fruit' => 'Banana',
        ),
        2 => 
        array (
          '@att' => 
          array (
            'Code' => '1',
          ),
          'Fruit' => 'Pear',
        )

列表还在继续。将所有“水果”转换(我假设是内爆)的最佳方法是什么,以逗号分隔或在仅包含名称元素的新数组中?

Fruits 是 @att 代码的子代,这是唯一的问题。

感谢您的帮助!

这就像遍历数组并抓取 Fruit 索引下的每个水果一样简单,然后将其插入到单独的数组中。

$fruits = [
    "somethings" => [
        "something" => [
            0 => [
                "@att" => [
                    "code" => "0"
                ],
                "Fruit" => "Apple",
            ],
            1 => [
                "@att" => [
                    "code" => "3"
                ],
                "Fruit" => "Banana",
            ],
            2 => [
                "@att" => [
                    "code" => "1"
                ],
                "Fruit" => "Pear",
            ]
        ],
    ],
];

$sortedFruits = [];

// Iterate through the fruits array and add each fruit into the sortedFruits list.
foreach ($fruits["somethings"]["something"] as $fruit) {
    array_push($sortedFruits, $fruit["Fruit"]);
}

var_dump($sortedFruits);
/*
 * Output:
 * array (size=3)
 *      0 => string 'Apple' (length=5)
 *      1 => string 'Banana' (length=6)
 *      2 => string 'Pear' (length=4)
 */

或者要获取逗号分隔的值,PHP 有一个内置的 implode 函数:

implode(",", $sortedFruits)

我们还可以对多维数组使用array_walk_recursive函数:

$your_array = array('Somethings' => 
        array(
          'Something' => 
          array(
            0 => 
            array(
              '@att' => 
              array(
                'Code' => '0',
              ),
              'Fruit' => 'Apple',
            ),
            1 => 
            array(
              '@att' => 
              array(
                'Code' => '3',
              ),
              'Fruit' => 'Banana',
            ),
            2 => 
            array(
              '@att' => 
              array(
                'Code' => '1',
              ),
              'Fruit' => 'Pear',
            )
          )
      )
      );
      
    
    $fruits_list="";
    $fruits_array = array();
    $callback = 
      function ($value, $key) use (&$fruits_array) {
         if($key == "Fruit"){
            array_push($fruits_array,$value);
            
         }
      };
    array_walk_recursive($your_array, $callback);
    $fruits_list = implode(',',$fruits_array);
    echo $fruits_list;