【问题标题】:PHP: Get array by 2 and store it to new array [duplicate]PHP:获取数组2并将其存储到新数组[重复]
【发布时间】:2019-07-16 10:01:59
【问题描述】:

我有空数组 $one$two

$one = [];
$two = [];

我有一个名为 alpabhet 的数组。

$alphabet = ["A", "B", "C", "D"];

是否可以这样获取数组:

$one = [
    0 => "A",
    1 => "C",
];

$two = [
    0 => "B",
    1 => "D",
];

谢谢!

【问题讨论】:

  • 到目前为止您尝试了哪些方法,遇到了哪些具体错误/问题?
  • @I.TDelinquent 是否可以将 $alpabhet 乘以 2 并将其存储到另一个数组中?抱歉,我是 php 新手

标签: php arrays


【解决方案1】:

您可以使用modulo % 运算符:

$alphabet = ["A", "B","C","D"];
$one = [];
$two = [];

foreach ($alphabet as $k => $v) {
    $k % 2 === 0 ? $one[] = $v : $two[] = $v;
}

print_r($one);
print_r($two);

结果

Array
(
    [0] => A
    [1] => C
)
Array
(
    [0] => B
    [1] => D
)

【讨论】:

    【解决方案2】:

    您可以使用array_filter() 来查看密钥是偶数还是奇数。使用常量ARRAY_FILTER_USE_KEY 将键值传递给回调而不是值。这将起作用,因为您声明的数组是数字索引的,从 0 开始。

    $alphabet = ["A", "B","C","D"];
    $one = array_filter($alphabet, function($key) {
        return !($key & 1); // Even keys
    }, ARRAY_FILTER_USE_KEY);
    
    $two = array_filter($alphabet, function($key) {
        return $key & 1; // Odd keys
    }, ARRAY_FILTER_USE_KEY);
    

    这确实保留了数组的原始键,因此如果您想重新分配键,您可以在结果数组上使用array_values(),请参阅https://3v4l.org/jv0Od

    【讨论】:

    • 与评论链接中的代码相同
    • 如果您想知道我是否复制了代码,不,我没有 - 这是一种方法(我自己写的),但如果其他人之前想到过,我并不感到惊讶 -因为它很简单,并且完全按照所问的问题进行。
    • 对不起,我没有立即关闭它,但希望有一个新的方法
    【解决方案3】:

    你可以试试这样循环

    $alphabet = ["A", "B", "C", "D"];
    
    $one = [];
    $two = [];
    
    
    foreach ($alphabet as $key => $val) {
        if($key == 0 || ($key%2) == 0) {
            $one[] = $val;
        } else {
            $two[] = $val;
        }
    }
    
    echo "<pre>";
    print_r($one);
    print_r($two);
    

    【讨论】:

      猜你喜欢
      • 2019-12-03
      • 2013-05-16
      • 2017-04-21
      • 2019-05-04
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      相关资源
      最近更新 更多