2017-12-18 72 views
1

分裂陣列我有這樣的數組:如何在PHP

<?php 
$biaya=odbc_exec($koneksi,"select * from example"); 
    $no=0; 
    while(odbc_fetch_row($biaya)){ 
    $no++; 
    $sub_title=odbc_result($biaya,"subtitle"); 
    $title=odbc_result($biaya,"title"); 
    } 
?> 

如果我顯示的循環將是這樣的:

enter image description here

我想分割基於陣列在小標題上。我想數組是這樣的:

enter image description here

enter image description here

我怎樣才能解決這個問題?

+0

相反cretainf兩個單獨數組變量的這更好: - '$陣列=陣列(0 =>數組( 陣列(沒有= 「1」,字幕= 「Perbekalan」, title =「lombok ijo」), array(no =「2」,subtitle =「Perbekalan」,title =「bawang abang」)),1 => array( array(no =「3」,subtitle =「Inventaris 「,title =」Wajan「)) );'。你不這麼認爲嗎?還有你如何創建'$ array'?該代碼部分丟失。因此,添加 –

+0

array_slice將是有用的\ – TarangP

+0

試試這個http://php.net/manual/en/function.array-chunk.php –

回答

0
  1. 更最好使用一些PHP適配器像EloquentDoctrine,而不是運行原始查詢。
  2. 使用order by

    SELECT * FROM例如爲了通過字幕

  3. while循環,請使用以下的伎倆。

```

$temp = null; 

$result = []; 
while(odbc_fetch_row($biaya)) { 
    $no++; 
    $sub_title=odbc_result($biaya,"subtitle"); 
    $title=odbc_result($biaya,"title"); 
    if($temp != $sub_title) { 
     $result[$sub_title] = ["no" => $no, "subtitle" => $sub_title, "title" => $title]; 
     $temp = $sub_title; 


    } 
    else { 
     $result[$sub_title][] = ["no" => $no, "subtitle" => $sub_title, "title" => $title]; 
    } 
} 

```

+0

稍後會有許多字幕。對不起,我只是給例2副標題 –

+0

@satewedos這將工作,即使你有超過2個字幕。 – adeltahir

+0

oke。我會嘗試應用它。謝謝 –

2

你可以像下面: -

$result = []; 
foreach ($array as $row){ 
    $result[$row['subtitle']][] = $row; 
} 
+0

這不會創建兩個不同的變量。如OP詢問 –

0

這裏是解決方案..你可以看到結果here(update)

我有Inventaris類別

<?php 
$array=array(
array("no"=>"1","subtitle"=>"Perbekalan", "title"=>"lombok ijo"), 
array("no"=>"11","subtitle"=>"Perbekalan", "title"=>"lombok asdf"), 
array("no"=>"2","subtitle"=>"Perbekalan", "title"=>"bawang abang"), 
array("no"=>"3","subtitle"=>"Inventaris", "title"=>"Wajan") 
); 
echo "<pre>"; 
//print_r($array); 
$Perbekalan=array(); 
$Inventaris=array(); 
$i=0; 
foreach ($array as $value) { 
    if($value['subtitle']=="Perbekalan") 
    { 
     $Perbekalan[$i]['no']=$value['no']; 
     $Perbekalan[$i]['subtitle']=$value['subtitle']; 
     $Perbekalan[$i]['title']=$value['title']; 
    } 
    if($value['subtitle']=="Inventaris") 
    { 
     $Inventaris[$i]['no']=$value['no']; 
     $Inventaris[$i]['subtitle']=$value['subtitle']; 
     $Inventaris[$i]['title']=$value['title']; 
    } 
    $i++; 

} 
echo "per"; 
print_r($Perbekalan); 
echo "ins"; 
print_r($Inventaris); 
?> 
+0

我的數組源是(while)而不是$ array。對不起,如果我寫一個模棱兩可的問題 –

0
更新
<?php 
$items= 
array(
    array('no'=>"1", 'subtitle'=>"Perbekalan", 'title'=>"lombok ijo"), 
    array('no'=>"3",'subtitle'=>"Inventaris", 'title'=>"Wajan"), 
    array('no'=>"2",'subtitle'=>"Perbekalan", 'title'=>"bawang abang") 
); 

foreach($items as $item) 
    $output[$item['subtitle']][] = $item; 

extract($output); 

var_export($Perbekalan); 
echo "\n"; 
var_export($Inventaris); 

輸出:

array (
    0 => 
    array (
     'no' => '1', 
     'subtitle' => 'Perbekalan', 
     'title' => 'lombok ijo', 
    ), 
    1 => 
    array (
     'no' => '2', 
     'subtitle' => 'Perbekalan', 
     'title' => 'bawang abang', 
    ), 
) 
    array (
    0 => 
    array (
     'no' => '3', 
     'subtitle' => 'Inventaris', 
     'title' => 'Wajan', 
    ), 
)