内爆二维数组中的数据
Implode data from a Two-dimensional array
我觉得应该不难解决,但我找不到解决方案。
我正在尝试内爆数组以获得此结果:
$new_array = "755, 646, 648, 260, 257, 261, 271, 764, ..."
这是我的数组:
Array
(
[0] => Array
(
[0] => 755
[1] => 646
)
[1] => Array
(
[0] => 648
[1] => 260
[2] => 257
[3] => 261
)
[2] => Array
(
[0] => 271
)
[3] => Array
(
[0] => 764
[1] => 643
[2] => 260
[3] => 263
[4] => 756
[5] => 763
[6] => 762
[7] => 259
[8] => 257
[9] => 758
[10] => 261
[11] => 768
[12] => 757
[13] => 647
)
)
我知道如何用一个简单的数组来做到这一点:
$newarray = implode(", ", $array);
我知道如何获取密钥(使用array_keys
)
$new_array = implode(", ", array_keys($array));
我试过 array_map
但暂时没有结果。
你能帮我指出正确的方向吗?
你必须将内部数组合并为一个(如果我们的多维数组称为$list
),我们可以:
$merged = array_reduce($list, 'array_merge', array());
现在您可以轻松地将其内爆:
$string = implode(', ', $merged);
回显给定的字符串将打印:
755, 646, 648, 260, 257, 261, 271, 764, ...
要知道你不能内爆多维数组,因为它的元素本身就是数组,所以可能会出现 array to string conversion
错误,因此我们应该使我们的数组平坦,为此你也可以检查 How to Flatten a Multidimensional Array? .
还要知道 array_reduce
做的是:
Iteratively reduce the array to a single value using a callback function.. see more
使用array_walk_recursive
函数的简单解决方案:
// $arr is your initial array
$new_arr = [];
array_walk_recursive($arr, function($v) use(&$new_arr){ $new_arr[] = $v; });
try this:
<?php
$array = array
(
array(755,646),
array(648,260,257,261),
array(271),
array(764,643,260,263,756,763,762,259,257,758,261,768,757,647)
);
echo "<pre>";
print_r($array);
foreach ($array as $value) {
$newstring[]=implode(",",$value);
}
echo implode(",",$newstring);
?>
你可以像上面那样用 foreach 循环来完成
有循环:
$array = array(
0 => array(
'name' => 'John Doe',
'email' => 'john@example.com'
),
1 => array(
'name' => 'Jane Doe2',
'email' => 'jane@example.com2'
),
);
//function to display values
function ImplodeDataValue($array) {
$tosinglearray=array();
for ($i = 0; $i <= count($array)-1; $i++) {
$tosinglearray[]=implode(',',$array[$i]);
}
return implode(',',$tosinglearray);
}
echo ImplodeDataValue($array);
//returns John Doe,john@example.com,Jane Doe2,jane@example.com2
我觉得应该不难解决,但我找不到解决方案。
我正在尝试内爆数组以获得此结果:
$new_array = "755, 646, 648, 260, 257, 261, 271, 764, ..."
这是我的数组:
Array
(
[0] => Array
(
[0] => 755
[1] => 646
)
[1] => Array
(
[0] => 648
[1] => 260
[2] => 257
[3] => 261
)
[2] => Array
(
[0] => 271
)
[3] => Array
(
[0] => 764
[1] => 643
[2] => 260
[3] => 263
[4] => 756
[5] => 763
[6] => 762
[7] => 259
[8] => 257
[9] => 758
[10] => 261
[11] => 768
[12] => 757
[13] => 647
)
)
我知道如何用一个简单的数组来做到这一点:
$newarray = implode(", ", $array);
我知道如何获取密钥(使用array_keys
)
$new_array = implode(", ", array_keys($array));
我试过 array_map
但暂时没有结果。
你能帮我指出正确的方向吗?
你必须将内部数组合并为一个(如果我们的多维数组称为$list
),我们可以:
$merged = array_reduce($list, 'array_merge', array());
现在您可以轻松地将其内爆:
$string = implode(', ', $merged);
回显给定的字符串将打印:
755, 646, 648, 260, 257, 261, 271, 764, ...
要知道你不能内爆多维数组,因为它的元素本身就是数组,所以可能会出现 array to string conversion
错误,因此我们应该使我们的数组平坦,为此你也可以检查 How to Flatten a Multidimensional Array? .
还要知道 array_reduce
做的是:
Iteratively reduce the array to a single value using a callback function.. see more
使用array_walk_recursive
函数的简单解决方案:
// $arr is your initial array
$new_arr = [];
array_walk_recursive($arr, function($v) use(&$new_arr){ $new_arr[] = $v; });
try this:
<?php
$array = array
(
array(755,646),
array(648,260,257,261),
array(271),
array(764,643,260,263,756,763,762,259,257,758,261,768,757,647)
);
echo "<pre>";
print_r($array);
foreach ($array as $value) {
$newstring[]=implode(",",$value);
}
echo implode(",",$newstring);
?>
你可以像上面那样用 foreach 循环来完成
有循环:
$array = array(
0 => array(
'name' => 'John Doe',
'email' => 'john@example.com'
),
1 => array(
'name' => 'Jane Doe2',
'email' => 'jane@example.com2'
),
);
//function to display values
function ImplodeDataValue($array) {
$tosinglearray=array();
for ($i = 0; $i <= count($array)-1; $i++) {
$tosinglearray[]=implode(',',$array[$i]);
}
return implode(',',$tosinglearray);
}
echo ImplodeDataValue($array);
//returns John Doe,john@example.com,Jane Doe2,jane@example.com2