代码之家  ›  专栏  ›  技术社区  ›  Clint_A

如何迭代这个php数组

  •  -1
  • Clint_A  · 技术社区  · 8 年前

    我有一个变量 INSERTs 从html表单输入附加到db的文件名。

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

    现在的问题是 插入内容 虽然输入设置为允许多个文件名,但只有一个文件名。所以我试着这样做:

    $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 回复  |  直到 8 年前
        1
  •  2
  •   dotoree    8 年前

    Foreach让我们在关联数组上迭代。

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

    https://3v4l.org/uPBug


    下面是一个for循环的示例,该循环使用array\u键获取关联数组键,并在循环中使用该键。

    $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/45fnM


    第三个示例是,可以使用array\u值删除关联键。
    只有当您知道数组中的所有值都是上载的,并且应该以相同的方式处理时,才应该使用此方法。

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

    https://3v4l.org/IrDrv

        2
  •  1
  •   Claudio    8 年前

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

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

    不要忘记更改数组的索引