PHP::当数组 1 的值位于偶数位置而数组 2 的值位于奇数位置时,如何合并 2 个数组?

发布于 2024-10-20 09:55:07 字数 165 浏览 4 评论 0原文

当数组 1 的值位于偶数位置而数组 2 的值位于奇数位置时,如何合并两个数组?

例子:

$arr1=array(11, 34,30);
$arr2=array(12, 666);
$output=array(11, 12, 34, 666,30);

How can I merge two arrays when array 1 values will be in even places and array 2 will be in odd places?

Example:

$arr1=array(11, 34,30);
$arr2=array(12, 666);
$output=array(11, 12, 34, 666,30);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

不喜欢何必死缠烂打 2024-10-27 09:55:08

无论两个数组的长度或其键(它不会索引到它们),这都将正常工作:

$result = array();
while(!empty($arr1) || !empty($arr2)) {
    if(!empty($arr1)) {
        $result[] = array_shift($arr1);
    }
    if(!empty($arr2)) {
        $result[] = array_shift($arr2);
    }
}

编辑:我原来的答案有一个错误;解决了这个问题。

This will work correctly no matter the length of the two arrays, or their keys (it does not index into them):

$result = array();
while(!empty($arr1) || !empty($arr2)) {
    if(!empty($arr1)) {
        $result[] = array_shift($arr1);
    }
    if(!empty($arr2)) {
        $result[] = array_shift($arr2);
    }
}

Edit: My original answer had a bug; fixed that.

最美的太阳 2024-10-27 09:55:08

尝试这个

$arr1=array(11,34,30,35);
$arr2=array(12,666,23);

$odd= array_combine(range(0,2*count($arr1)-1,2), $arr1);
$even = array_combine(range(1,2*count($arr2)-1,2), $arr2);
$output=$odd+$even;
ksort($output);
echo "<pre>";
print_r($output);

返回

Array
(
    [0] => 11
    [1] => 12
    [2] => 34
    [3] => 666
    [4] => 30
    [5] => 23
    [6] => 35
)

try this

$arr1=array(11,34,30,35);
$arr2=array(12,666,23);

$odd= array_combine(range(0,2*count($arr1)-1,2), $arr1);
$even = array_combine(range(1,2*count($arr2)-1,2), $arr2);
$output=$odd+$even;
ksort($output);
echo "<pre>";
print_r($output);

returns

Array
(
    [0] => 11
    [1] => 12
    [2] => 34
    [3] => 666
    [4] => 30
    [5] => 23
    [6] => 35
)
坐在坟头思考人生 2024-10-27 09:55:08

假设 $arr1 和 $arr2 是大小相等的简单枚举数组,或者其中 $arr2 仅比 $arr1 少一个元素。

$arr1 = array(11, 34); 
$arr2 = array(12, 666);
$output = array();
foreach($arr1 as $key => $value) {
    $output[] = $value;
    if (isset($arr2[$key])) {
        $output[] = $arr2[$key];
    }
}

Assuming $arr1 and $arr2 are simple enumerated arrays of equal size, or where $arr2 has only one element less that $arr1.

$arr1 = array(11, 34); 
$arr2 = array(12, 666);
$output = array();
foreach($arr1 as $key => $value) {
    $output[] = $value;
    if (isset($arr2[$key])) {
        $output[] = $arr2[$key];
    }
}
ぇ气 2024-10-27 09:55:08

遍历包含更多项目的数组,使用循环索引访问两个数组并根据需要将它们组合成结果数组......

$longer = (count($arr1) > count($arr2) ? $arr1 : $arr2);
$result = array();
for ($i = 0; $i < count($longer); $i++) {
   $result[] = $arr1[i];
   if ($arr2[i]) {
      $result[] = $arr2[i];
   } else {
      $result[] = 0; // no item in arr2 for given index
   }
}

Go through array with more items, use loop index to access both arrays and combine them into resulting one as required...

$longer = (count($arr1) > count($arr2) ? $arr1 : $arr2);
$result = array();
for ($i = 0; $i < count($longer); $i++) {
   $result[] = $arr1[i];
   if ($arr2[i]) {
      $result[] = $arr2[i];
   } else {
      $result[] = 0; // no item in arr2 for given index
   }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文