【问题标题】:Slicing two values from array and adding to new array in for loop从数组中切片两个值并在 for 循环中添加到新数组
【发布时间】:2016-08-26 13:51:21
【问题描述】:

我遇到了 php 循环问题。

也许有更好的方法来做到这一点。目前我的post 正在返回

array(4) { 
    [1]=> string(2) "on" 
    ["1-qty"]=> string(1) "1" 
    [5]=> string(2) "on" 
    ["5-qty"]=> string(1) "9" 
}

我正在尝试创建一个包含 2 个数组的新数组,如下所示

array(2) { 
    array(2) { 
        [category]=> string(2) "1" 
        ["qty"]=> string(1) "1" 
    } 
    array(2) { 
        [category]=> string(2) "5" 
        ["qty"]=> string(1) "9" 
    }
}

我已经尝试了所有可以组合在一起的 foreach 和 for 循环。主要问题是我需要的第一个值是键而不是第一个数组的值。然后我需要从主数组中取出前两个数组并添加到一个新数组中,第一个数组键是数组中第一个键类别的新值,第二个数组的值是新的值在数组中键入 qty,并按 post 变量中的 2 个 foreach 组重复

当前循环(不工作)

$data = $this -> input -> post();
$dCount = count($data);
$newCount = $dCount / 2;
$fin = array();
for ($i = 0; $i <= $newCount; $i++) {
    $vals = array_slice($data, 0, $i + 1, true);
    $qty = array_slice($vals, 0, $i , true);
    $key = current(array_keys($qty));
    $final = array('category' => $key, 'qty' => $qty[$key . '-qty']);
    $fin[] = $final;
}

【问题讨论】:

    标签: php arrays string loops multidimensional-array


    【解决方案1】:

    试试这个方法:

    $source_arr = array(1 => "on", "1-qty" => 1, 5 => "on", "5-qty" => "9");
    $result_arr = array();
    foreach ($source_arr as $key => $value) {
        if ($value == "on" && isset($source_arr[$key . "-qty"])) {
             $result_arr[] = array(
                 'category' => $key, 
                 'qty' => $source_arr[$key . "-qty"]
             );
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-01
      • 2011-07-26
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      相关资源
      最近更新 更多