请问有人在php中将二维数组转换为一维数组吗?我尚未找到清晰的php解释。如有建议,将不胜感激。
请问有人在php中将二维数组转换为一维数组吗?我尚未找到清晰的php解释。如有建议,将不胜感激。
如果您正在从查询中获取值,这可能对您有所帮助。在此处,您可以使用数组函数,它将支持PHP 5.5+。
$myfield_arr = array_column($query_result, 'myfield_name');
告别循环!享受智能代码。
试试这个:
function array_2d_to_1d ($input_array) {
$output_array = array();
for ($i = 0; $i < count($input_array); $i++) {
for ($j = 0; $j < count($input_array[$i]); $j++) {
$output_array[] = $input_array[$i][$j];
}
}
return $output_array;
}
for
语句的末尾添加 $i++
和 $j++
吗? - SAVAFA这取决于您的需求,但如果您想将2D数组减少为完全填充2D平面的1D曲线,则可能需要空间索引或空间填充曲线。有一些著名的和不那么出名的曲线,例如z曲线、希尔伯特曲线、皮亚诺曲线或摩尔曲线。您可以使用L系统编写这样的曲线。
Try this one:
function array_to1d($a) {
$out = array();
foreach ($a as $b) {
foreach ($b as $c) {
if (isset($c)) {
$out[] = $c;
}
}
}
return $out;
}
请注意,它包括一个测试以查看值是否设置(非空)。将行长度不同的数组 转置 成为的数组将在某些单元格中具有 null 值,如果您试图线性化这种“野兽”,则此检查可能会有所帮助。
array_reduce()
。在PHP文档中,对于2D => 1D数组转换,某物是数组;我们在一个数组中有很多这样的数组,但我们只需要一个数组本身。array_reduce — 使用回调函数迭代地将数组简化为单个值
function array2dTo1d($array2d)
{
return array_reduce($array2d, function($carry, $array) {
return array_merge($carry, $array);
}, []);
}
var_dump(array2dTo1d(
[
[23423, 5454, 567],
[4565, 687],
]
));
结果:
array(5) {
[0] =>
int(23423)
[1] =>
int(5454)
[2] =>
int(567)
[3] =>
int(4565)
[4] =>
int(687)
}
针对矩形2D数组的解决方案确实很简单,但我遇到了一个问题。我的2D数组由不同长度的1D数组组成:
$myArray = [
[1, 2, 3, 4],
[5, 6, 7],
[8, 9]
];
我想出了更通用的解决方案,可以将任何二维数组转换为一维数组:
function array2DTo1D($arr2D) {
$i = 0; $j = 0;
$arr1D = [];
while (isset($arr2D[$i][0])) {
while (isset($arr2D[$i][$j])) {
$arr1D[] = $arr2D[$i][$j];
$j++;
}
$i++; $j = 0;
}
return $arr1D;
}
在 PHP 5.3 之后出现了一个新的函数,叫做 arrray_walk_recursive
$data = [1,2,[3,4],5,[6,7,8],9];
$output = [];
array_walk_recursive($data, function($val) use (&$output) {
$output[] = $val;
});
请注意,$output
是通过引用传递的(passed by reference)
$output
将导致[1,2,3,4,5,6,7,8,9]