从数组中剪切两个值,并在for循环中添加到新数组中


Slicing two values from array and adding to new array in for loop

我在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" 
    }
}

我试过每一个前臂和for循环,我能设法把它们组合在一起。主要问题是我需要的第一个值是键,而不是第一个数组的值。然后,我需要从主数组中取出前两个数组,并将其添加到一个新数组中,其中第一个数组关键字是数组中第一个关键字类别的新值,第二个数组的值是数组中新关键字数量的值,并对post变量中的每个集合按2组重复

电流回路(不工作)

$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;
}

试试这个方法:

$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"]
         );
    }
}