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

时间:2016-05-01 20:28:02

标签: php arrays string loops multidimensional-array

我遇到了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循环,我可以设法组合在一起。我需要的第一个值的主要问题是关键而不是第一个数组的值。然后我需要从主数组中获取前两个数组并添加到一个新数组,第一个数组键是数组中第一个键类别的新值,第二个数组的值是新数组的值数组中的key 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;
}

1 个答案:

答案 0 :(得分:3)

尝试这种方式:

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