PHP使用数组映射数组移位将数组切片为奇偶子数组

PHP使用数组映射数组移位将数组切片为奇偶子数组,php,arrays,Php,Arrays,根据定义,PHP的array_shift将返回数组中的第一个元素,数组将缩小一个元素 我想把一个数组交替地分为两个子数组,即索引为0,2,4,6,。。。指数为1,3,5,7 我首先把它分成2块,然后使用array\u map调用array\u shift。但是,它是半正确的(输出如下): 代码如下: $a=array("greeting", "hello", "question", "how-are-you", "response", "im-fine"); $b=array_chunk($a,

根据定义,PHP的array_shift将返回数组中的第一个元素,数组将缩小一个元素

我想把一个数组交替地分为两个子数组,即索引为0,2,4,6,。。。指数为1,3,5,7

我首先把它分成2块,然后使用array\u map调用array\u shift。但是,它是半正确的(输出如下):

代码如下:

$a=array("greeting", "hello", "question", "how-are-you", "response", "im-fine");
$b=array_chunk($a, 2);
$c=array_map("array_shift", $b);
echo "array1: ";
print_r($c);
echo "array2: ";
print_r($b);
array2在array_移位后似乎没有缩小尺寸。这是正确的行为吗?我怎样才能做我想做的事


谢谢

尝试用这种方法来拆分数组,交替使用偶数键和奇数键,可能有很多方法可以做到这一点,但这是我使用
array\u walk

$odd = [];
$even = [];
$both = [&$even, &$odd];
$array=["greeting", "hello", "question", "how-are-you", "response", "im-fine"];
array_walk($array, function($value, $key) use ($both) { $both[$key % 2][] = $value; });
print '<pre>';
print_r($even);
print_r($odd);
print '</pre>';
$odd=[];
$偶数=[];
$both=[&$偶数,&$奇数];
$array=[“问候”、“你好”、“问题”、“你好”、“回复”、“我很好”];
array_walk($array,function($value,$key)use($both){$both[$key%2][=$value;});
打印“”;
打印(偶数);
印刷费(奇数);
打印“”;
结果: 成功时间:0.02内存:24448信号:0

数组
(
[0]=>问候语
[1] =>问题
[2] =>响应
)
大堆
(
[0]=>您好
[1] =>你好吗
[2] =>我很好
)

虽然这已经用数组函数解决了,但这里有一个低技术的解决方案,它使用一个简单的开关来分离奇偶元素

结果


嗨,人类:谢谢你的建议。第一个工作,第二个打印如下:Array()Array()@shualliang查看我编辑的答案,因为我在第一个解决方案中设置了$Array变量,所以它没有在这里设置,这就是为什么您得到Array(),现在检查…信用到期的地方@作为人类,我知道还有一条路要走。不管怎样,只要有效,它就有价值。谢谢。可能是第二份
$odd = [];
$even = [];
$both = [&$even, &$odd];
$array=["greeting", "hello", "question", "how-are-you", "response", "im-fine"];
array_walk($array, function($value, $key) use ($both) { $both[$key % 2][] = $value; });
print '<pre>';
print_r($even);
print_r($odd);
print '</pre>';
<pre>Array
(
    [0] => greeting
    [1] => question
    [2] => response
)
Array
(
    [0] => hello
    [1] => how-are-you
    [2] => im-fine
)
$in = array("greeting", "hello", "question", "how-are-you", "response", "im-fine");

$i = 0;
$list = array();
foreach ($in as $text)
{
  $list[$i][] = $text;
  $i = 1 - $i;
}

print_r($list[0]);
print_r($list[1]);
Array ( [0] => greeting [1] => question [2] => response ) 
Array ( [0] => hello [1] => how-are-you [2] => im-fine )