我怎么能迭代这个PHP数组

时间:2018-01-26 08:57:17

标签: php arrays iteration slim

我有这个变量,INSERTs来自html表单输入的附加文件名。

$insertAttachments->execute( array(':attachment2' => $attachment2) );

现在问题是INSERTs只有一个文件名,尽管输入设置为允许多个。所以我试着这样做:

$uploads = count($attachment2);  //counts the number of attachments
for($i=0; $i<$uploads; $i++){
    $insertAttachments->execute( array(':attachment2' => $attachment2) );
}

让我想知道放置[$i]的位置,以便迭代array(':attachment2' => $attachment2)

如果我为它指定一个变量并将其设为 -

$alluploads = array(':attachment2' => $attachment2);
for($i=0; $i<$uploads; $i++){
    $insertAttachments->execute( $alluploads[$i] );
}

遇到错误。任何想法我应该如何解决这个问题?我正在扩展一个php 5.3 / slim框架应用程序。

2 个答案:

答案 0 :(得分:2)

Foreach让你迭代一个关联数组。

x4

https://3v4l.org/uPBug

<小时/>

这是一个使用array_keys获取关联数组键并在循环中使用它的for循环的示例。

$alluploads = array(':attachment2' => "attachment2");
foreach($alluploads as $key => $value){
    echo "key: " . $key . " Has value: ". $value ."\n";
}

https://3v4l.org/45fnM

<小时/>

作为第三个例子,你可以使用array_values来删除关联键 只有在您知道数组中的所有值都是上传并且应该对其进行相同处理时,才应使用此方法。

$alluploads = array(':attachment2' => "attachment2");
$keys = array_keys($alluploads);
for($i=0;$i<count($keys);$i++){
    echo "key: " . $keys[$i] . " Has value: ". $alluploads[$keys[$i]] ."\n";
}

https://3v4l.org/IrDrv

答案 1 :(得分:1)

您可以使用foreach循环,这样您也不需要计数,如下所示:

foreach ($attachment2 as $a){
    $insertAttachments->execute( array(':attachment2' => $a['some index with the file path']) );
}

不要忘记更改数组的索引