2013-07-11 46 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