使用foreach循环和多维数组的php数组键问题

时间:2014-09-08 18:37:41

标签: php arrays foreach

我在下面列举了一个例子。我需要的是$ key在循环期间返回数组中的实际索引号(位置),而是返回Array。给定单维数组时,相同的代码可以正常工作,但下面的示例中没有。

下式给出:

$ screenshots类似于以下内容,只有更多条目。

Array
(
    [0] => Array
        (
            [screenshot_id] => 871
            [image_filename] => DSCF0124.JPG
        )

)

PHP:

//build in clause & binding using selected array from above
$prefix = $in_clause = '';
$binding_clause = array();  
foreach($screenshots as $key)
{
    $in_clause .= $prefix.':selected_'.$key;
    $prefix = ', ';
    $binding_clause[':selected_'.$key] = $key['screenshot_id'];
}

结果:

$inclause = :selected_Array

$binding_clause = 

Array
(
    [:selected_Array] => 871
)

预期:

$inclause = :selected_0

$binding_clause = 

Array
(
    [:selected_0] => 871
)

4 个答案:

答案 0 :(得分:2)

仅仅因为你称之为$key并不是一把钥匙。你需要键和值(内部数组):

foreach($screenshots as $key => $value)
{
    $in_clause .= $prefix.':selected_'.$key;
    $prefix = ', ';
    $binding_clause[':selected_'.$key] = $value['screenshot_id'];
}

答案 1 :(得分:1)

你需要告诉它你想要KEY和VALUE。

像这样:

foreach($screenshots as $key=>$screenShot)

这将为您提供关键和价值。

答案 2 :(得分:1)

您只需要将foreach更改为投射键和值

foreach($screenshots as $key => $val)

现在,密钥位于$key变量中,而您可以使用$val数组访问元素,例如$key['screenshot_id']

您可以查看文档示例here

答案 3 :(得分:1)

尝试:

foreach($screenshots as $key => $screenshot)
{
    $in_clause .= $prefix.':selected_'.$key;
    $prefix = ', ';
    $binding_clause[':selected_'.$key] = $screenshot['screenshot_id'];
}

详细了解PHP foreach:http://php.net/manual/en/control-structures.foreach.php