2013-07-11 73 views
0

我有數組,顯示的結果是這樣的:比較數組鍵,得到的值在PHP

Array ([standards_id] => 1 
    [value] => sory 
    [order] => 10 
) 
Array ([standards_id] => 1 
    [value] => javid 
    [order] => 3 
) 
Array ([standards_id] => 1 
    [value] => saleem 
    [order] => 4 
). 

我想檢查數組鍵,如果是「值」,然後我想連接的value.I嘗試這樣的代碼,但沒有成功。

$row = array(.....); 
$vali = ''; 
foreach ($row as $key => $value) { 

     if($value[$key] == 'value'){ 

       echo $vali .= $value['value'].","; 
     } 
    } 

我想這樣做在一個循環。$行包含像上面3. $行的多個陣列包含從數據base.hope你瞭解$行是什麼,被提取的記錄。

+0

爲什麼$ value [$ key] ?? –

+0

'$ row'的實際內容是什麼?一行還是多行? –

+0

@Jack $行包含多個像上面3一樣的數組。 –

回答

1

使用isset()找出關鍵'value'是否存在於$row每個元素;你並不需要爲一個循環都:

foreach ($row as $data) { 
    if (isset($data['value'])) { 
     $vali .= $data['value'] . ','; 
    } 
} 

或者,你可以用值創建數組:

$values = array(); 
foreach ($row as $data) { 
    if (isset($data['value'])) { 
     $values[] = $data['value']; 
    } 
} 
echo join(',', $values); 
+0

你的代碼可以幫助我解決這個問題。 –

0

你需要這樣的:

foreach ($row as $key => $value) { 

      if($key == 'value'){ 

        $vali .= $value.","; 
      } 
     } 

echo $vali; 
+0

不能正常顯示逗號的第一個值像是對不起, –

-1
$row = array('standards_id' => 1, 'value' => 'saleem', 'order' => 4); 
$vali = ''; 
foreach ($row as $key => $value) { 
    if($key == 'value'){ 
     $vali .= $value . ","; 
    } 
} 
echo $vali; 
+0

爲什麼downvote? – Jon

1

你的命名錶明,$row只包含:

Array ([standards_id] => 1 
    [value] => sory 
    [order] => 10 
) 

沒有理由循環這樣的結構。 ,您可以測試這個「行」包含

if(isset($row['value'])) { 
    $vali .= $row['value'] . ', '; 
} 

的值。如果你有一個變量$myRows含有這些陣列可以遍歷他們使用

foreach($myRows as $k => $row) { ... } 

在這種情況下$row包含數組和您可以使用第一個代碼將值附加到$vali

+0

$ row一次存儲多個數組。我無法僅檢查您所建議的值。 –

+0

我會建議重命名該變量,然後到'$ rows'或'$ myRows'或其他暗示它保存多行的東西。這有助於代碼的可讀性。 – Sumurai8