只是想知道是否有人将2 dim数组转换为php中的一个dim数组。我还没有在php中找到明确的解释。任何建议都将不胜感激。
答案 0 :(得分:7)
试试这个:
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;
}
答案 1 :(得分:6)
如果您从Query中获取值,这可能会对您有所帮助,您可以使用PHP 5.5中支持的数组函数
Story
说再见循环!享受智能代码。
答案 2 :(得分:1)
$array = array(array('green', 'yellow', 'orange'), array('blue', 'black', 'white'));
$newarray = array();
foreach (array_values($array) as $value){
$newarray[] = $value;
}
答案 3 :(得分:1)
这取决于你需要什么,但是如果你想将你的二维阵列缩小到一条完整填充二维平面的1d曲线,你可能正在寻找空间索引或空间填充曲线。有一些着名的和不太知名的如z曲线,希尔伯特曲线,皮亚诺曲线或摩尔曲线。您可以使用L系统编写这样的曲线。
答案 4 :(得分:1)
试试这个:
function array_to1d($a) {
$out = array();
foreach ($a as $b) {
foreach ($b as $c) {
if (isset($c)) {
$out[] = $c;
}
}
}
return $out;
}
请注意,它包含一个测试,以查看该值是否已设置(非空)。一个数组的transposition数组中包含不同长度的行将在某些单元格中具有空值,如果您尝试线性化这样的野兽,则此检查可能会有所帮助。
答案 5 :(得分:0)
矩形二维数组的解决方案确实很简单,但我遇到了一个问题:我的二维数组包含不同长度的一维数组,如:
myArray=array(
array(1, 2, 3, 4),
array(5, 6, 7),
array(8, 9)
);
我提出了更通用的解决方案,将任何2D阵列转换为1D:
function array2DTo1D($arr2D){
$i=0; $j=0;
$arr1D=array();
while (isset($arr2D[$i][0])){
while (isset($arr2D[$i][$j])){
$arr1D[]=$arr2D[$i][$j];
$j++;
}
$i++;$j=0;
}
return $arr1D;
}
答案 6 :(得分:0)
在 PHP 5.3 之后,有一个名为Resource to learn
的新功能。AF.request(...).responseDecodable(of: YourType.self) { response in
// Handle response.
}
请注意,$data = [1,2,[3,4],5,[6,7,8],9];
$output = [];
array_walk_recursive($data, function($val) use (&$output) {
$output[] = $val;
});
是arrray_walk_recursive
$output
将产生$output
答案 7 :(得分:0)
只要您在数组中有很多某物,而您只想要一个某物本身就可以代表它们,那么您的第一个想法应该是array_reduce()
方式。
来自PHP文档:
array_reduce —使用回调函数将数组迭代地减少为单个值
对于2D => 1D数组转换,某物是 array ;我们有很多数组,但是我们只想要其中一个。
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)
}