2016-05-01 14 views
0

PHPループに問題があります。配列から2つの値をスライスし、forループの新しい配列に追加する

恐らくこれを行うより良い方法があります。現在、私のpostは、私は、そのような私は、すべてのforeachについて、私は一緒に入れて管理することができますループのために試してみましたが、次の

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

として2つの配列の新しい配列を作成しようとしています

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

を返します。私が必要とする最初の値である主な問題は、最初の配列の値ではなくキーです。次に、メイン配列から最初の2つの配列を取り出し、最初の配列キーを配列の最初のキーカテゴリの新しい値にして新しい配列に追加し、2番目の配列の値を新しい配列の値にする必要がありますキー配列での数量、および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; 
} 

答えて

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

おかげで、私はキー/値付きのforeachを使用しようとしませんでした。ウェイクリーナーコード... – user1881482

関連する問題