2013-12-18 28 views
0

分裂陣列我使用PHP和我有從查詢陣列PHP - 從查詢

Array 
(
    [0] => stdClass Object 
     (
      [question_id] => 13 
      [is_break] => 0 
     ) 

    [1] => stdClass Object 
     (
      [question_id] => 14 
      [is_break] => 1 
     ) 

    [2] => stdClass Object 
     (
      [question_id] => 15 
      [is_break] => 0 
     ) 
    [3] => stdClass Object 
     (
      [question_id] => 16 
      [is_break] => 1 
     ) 
    [4] => stdClass Object 
     (
      [question_id] => 17 
      [is_break] => 1 
     ) 
) 

如何分割(分組)由is_break = 1因此,我已question_id(13,14)(15,16) (17)

+0

我不明白downvote。這是一個完全有效的編程問題,數組值的條件分組似乎並不是直截了當的。 –

回答

0

這裏的解決方案

$data = {your data}; 

$result = array(); 
$i  = 0; 
foreach($data as $k => $item) { 

    if ($item->is_break) { 
     $result[] = array_slice($data, $i, $k); 
    } 
    $i = $k; 
} 

print_r($result); 
1

一個簡單而幼稚的解決方案可能是這個樣子:

var original = /* your original array, the one you posted */; 
var result = []; 
var tmp = []; 
$.each(original, function(idx, obj) { 
    tmp.push(obj.question_id); 
    if(obj.is_break == 1) { 
     result.push(tmp); 
     tmp = []; 
    } 
}); 
console.log(result); // returns array of array 

HTH

編輯:在PHP中,它可能看起來像這樣(我不是太清楚,精通PHP):

var $original = /* your original array, the one you posted */; 
var $result = []; 
var $tmp = []; 
foreach($original as $obj) { 
    $tmp.push($obj.question_id); /* or could be $obj['question_id'] */ 
    if($obj.is_break == 1) { /* or could be $obj['is_break'] */ 
     $result.push($tmp); 
     $tmp = []; 
    } 
}); 
+0

php數組...... ...... – Hahm

+0

然後你必須指定語言。無論如何,我提出的邏輯適用於包括PHP在內的任何語言的數組。 –

0

試試這個:

<?php 

$inputArr = Array 
(
Array("question_id" => 13, "is_break" => 0), 
Array("question_id" => 14, "is_break" => 1), 
Array("question_id" => 15, "is_break" => 0), 
Array("question_id" => 16, "is_break" => 1), 
Array("question_id" => 17, "is_break" => 1) 
); 

$result = array(); 
$tmp = array(); 

foreach ($inputArr as $obj) { 
    //$tmp . push($obj . question_id); /* or could be $obj['question_id'] */ 

    array_push($tmp, $obj['question_id']); 

    if ($obj['is_break'] == 1) { /* or could be $obj['is_break'] */ 
     //$result . push($tmp); 
     array_push($result, $tmp); 
     $tmp = array(); 
    } 
} 

var_dump($result); 
?> 
  • 感謝