我在下面列举了一个例子。我需要的是$ 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
)
答案 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