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;
我有一个数组
'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;