从2d数组中每个值的第一个成员生成1d数组| PHP

从2d数组中每个值的第一个成员生成1d数组| PHP,php,arrays,multidimensional-array,reduce,Php,Arrays,Multidimensional Array,Reduce,你怎么能做到这一点?我在这里看到的代码不起作用 for($i=0;i<count($cond);$i++){ $cond[$i] = $cond[$i][0]; } ($i=0;i)的 假设以后希望使用相同的变量名,可以将新数组重新分配回旧数组 $array = $array2; unset($array2); // Not needed, but helps with keeping memory down 此外,您还可以根据数组中的内容执行以下操作 $array = arr

你怎么能做到这一点?我在这里看到的代码不起作用

for($i=0;i<count($cond);$i++){
    $cond[$i] = $cond[$i][0];
}
($i=0;i)的

假设以后希望使用相同的变量名,可以将新数组重新分配回旧数组

$array = $array2;
unset($array2); // Not needed, but helps with keeping memory down
此外,您还可以根据数组中的内容执行以下操作

$array = array_merge(array_values($array));
假设以后希望使用相同的变量名,可以将新数组重新分配回旧数组

$array = $array2;
unset($array2); // Not needed, but helps with keeping memory down
此外,您还可以根据数组中的内容执行以下操作

$array = array_merge(array_values($array));

这应该行得通。为什么行不通?您收到了什么错误消息? 这是我将使用的代码:

$inArr;//This is the 2D array
$outArr = array();
for($i=0;$i<count($inArr);$i++){
        $outArr[$i] = $inArr[$i][0];
}
$inArr;//这是2D数组
$outArr=array();

对于($i=0;$i这应该可以工作。为什么不工作?您会收到什么错误消息? 这是我将使用的代码:

$inArr;//This is the 2D array
$outArr = array();
for($i=0;$i<count($inArr);$i++){
        $outArr[$i] = $inArr[$i][0];
}
$inArr;//这是2D数组
$outArr=array();

对于($i=0;$i),如果源数组没有数字索引,则可能会出现问题。请尝试以下方法:

$destinationArray = array();
for ($sourceArray as $key=>$value) {
    $destinationArray[] = $value[0]; //you may want to use a different index than '0'
}

如果源阵列没有数字索引,则可能会出现问题。请尝试以下操作:

$destinationArray = array();
for ($sourceArray as $key=>$value) {
    $destinationArray[] = $value[0]; //you may want to use a different index than '0'
}

如前所述,您的代码在各种情况下都无法正常工作。 尝试使用以下值初始化数组:

$cond = array(5=>array('4','3'),9=>array('3','4'));
对我来说,一个更好阅读的解决方案是以下代码:

//explain what to do to every single line of the 2d array
function reduceRowToFirstItem($x) { return $x[0]; }

// apply the trasnformation to the array
$a=array_map('reduceRowTofirstItem',$cond);
你可以阅读这本书,以获得详尽的解释

您还可以选择使用(它在数组“就地”上操作)进行轻微更改。请注意,该函数不返回值,并且其参数是通过引用传递的

function reduceToFirstItem(&$x) { $x=$x[0]; }
array_walk($cond, 'reduceToFirstItem');

如前所述,您的代码在各种情况下都无法正常工作。 尝试使用以下值初始化数组:

$cond = array(5=>array('4','3'),9=>array('3','4'));
对我来说,一个更好阅读的解决方案是以下代码:

//explain what to do to every single line of the 2d array
function reduceRowToFirstItem($x) { return $x[0]; }

// apply the trasnformation to the array
$a=array_map('reduceRowTofirstItem',$cond);
你可以阅读这本书,以获得详尽的解释

您还可以选择使用(它在数组“就地”上操作)进行轻微更改。请注意,该函数不返回值,并且其参数是通过引用传递的

function reduceToFirstItem(&$x) { $x=$x[0]; }
array_walk($cond, 'reduceToFirstItem');

可以这么简单:

$array = array_map('reset', $array);

可以这么简单:

$array = array_map('reset', $array);

感谢您的回复,但我不想使用另一个变量名,在PHP中,变量应该在读取变量后写入?我想?是的,但是,由于您已经将其放入循环中,因此会少一点混乱。此外,count()在每次迭代中都会计算。因此,当您向其中添加内容时,这总是会发生变化。PHP中变量名的数量没有限制!您可以始终在循环后将其分配回原始变量(使用$array=$array2;)我发现,如果您执行-foreach,您可以在foreach循环中“就地”进行更改($myarray as&$item)感谢您的响应,但我不想使用另一个变量名,在PHP中,变量应该在读取变量后写入?我想?是的,但是,由于您在循环中得到了它,所以会少一点混乱。另外,count()也在每次迭代中都会计算。因此,当您向其中添加内容时,这总是会发生变化。PHP中变量名的数量没有限制!您可以始终在循环后将其分配回原始变量(使用$array=$array2;)我发现,如果您执行-foreach,您可以在foreach循环中“就地”进行更改($myarray as&$item)哦,我明白问题了……也许是我wow@Supernovah:每个变量,在每次访问它时,都需要在其名称前加上$符号。哦,我看到了问题…可能是I