2015-10-09 65 views
-3

我在爆炸數組和使用它時遇到問題。 我有一系列的書籍分類爲已讀和未讀書籍的序列號。 下面有個讀到我讀過的書的地方,然後在那個序列號後面讀取。php循環和控制流程

array(
"1234567890","read", 
"2345678901","read", 
"2345678901", 
"2345678901", 
"1234561231", 
"3333333333","read", 
"3333333333" 
) 

狀態是未讀的所有其他和在輸出我想循環通過數組給我這個結果。

1234567890: 0 unread, 1 read 
2345678901: 2 unread, 1 read 
1234561231: 1 unread, 0 read 
3333333333: 1 unread, 1 read 

任何幫助將不勝感激。

+1

1)您是否嘗試過的東西? 2)你爲什麼不用一個多維數組來計算呢? – Rizier123

+0

我已經嘗試了很多,但沒有爲我工作,每次我得到太多錯誤的結果,所以張貼在這裏知道如何做到這一點,我 –

+0

把你的代碼你試過。 –

回答

0

在第一次數組你在最好的辦法就是不建,更好的方式是:

$arr = array(
"1234567890","read", 
"2345678901","read", 
"2345678901","unread" 
) 

,但你可以這樣做:

$idx=count($arr); 
$collector=array(); 
for($i=0;$i<$idx;$i++){ 
if($arr[$i]==='read') continue; 
if(!isset($collector[$arr[$i]])){ 
    $collector[$arr[$i]]=array(0,0);#array(read,unread) 
} 
if($arr[$i+1]==='read'){ 
    $collector[$arr[$i]][0]++; 
} else { 
    $collector[$arr[$i]][1]++; 
} 
} 

#print it 
foreach($collector as $id => $data){ 
    print "$id: {$data[0]} read , {$data[1]} unread<br>".PHP_EOL; 
} 

不過還好嘗試蒐集數據以更好的方式!

0

使用多維數組來代替:

<?php 
$arrBooks = array(
"1234567890" => array(
"read"=>'1', 
"unread"=>'0'), 
); 
foreach ($arrBooks as $obj_key =>$book) 
{ 
echo "$obj_key:<br>"; 
foreach ($book as $key=>$value){ 
echo "$key: $value<br>"; 
} 
echo "<br>"; 
} 

這種方式可以很容易地通過鑰匙環,並相應地獲得數據。

如果您要更新的陣列爲好,這裏是一段代碼:

foreach ($arrBooks as $obj_key =>$book) 
{ 
if($obj_key=="1234567890") 
{ 
foreach ($book as $key=>$value){ 
    if($key=="read") 
    { 
     $value+=1; 
     } 
    echo "$key: $value<br>"; 
} 
} 
}