PHP:检查Key是否等于string

时间:2017-07-14 23:08:29

标签: php arrays

我正在使用二维数组,并且当我遍历此数组的每个索引时,我试图检查当前键是否等于字符串。< / p>

以下是我尝试做的事情:

foreach($_POST['items'] as $index => $item){

    $key = key($item);

    if($key == 'image'){
        echo 'hello';
    }

}

这会抛出错误为foreach()提供的无效参数

如何检查当前密钥是否等于特定字符串?

的var_dump

array(2) { 
    [0]=> array(1) { ["paragraph"]=> string(4) "paragraph 1" } 
    [1]=> array(1) { ["paragraph"]=> string(4) "paragraph 2" } 
} 
array(2) { 
    [0]=> array(1) { ["paragraph"]=> string(4) "paragraph 3" } 
    [1]=> array(1) { ["paragraph"]=> string(4) "paragraph 4" } 
}

以下是名称为image的表单中的元素:

<div><input type="file" name="items[][image]" id="uploadImage" multiple></div>

动态表单的var_dump,包含1个图像输入,后跟1个段落输入

array(1) { 
    [0]=> array(1) { ["paragraph"]=> string(11) "paragraph 1" } 
} 

var_dump没有看到名为image ???

的输入

此处为表单其内容是从<script>

动态添加的
<form method="post" action="insert.php" enctype="multipart/form-data">

        <textarea name="title"></textarea>

        <input type="submit" name="upload" value="Upload" id="upload">
    </form>

其中一个动态添加功能(此功能用于图像输入)

    function addImage() {
    $("form").append('<div><input type="file" name="items[][image]" id="uploadImage" multiple></div>');
}

2 个答案:

答案 0 :(得分:1)

检查$ _POST ['items']是否为数组

sub MergeHash {
   my $h = shift; # reference to receiving hash
   my $r = shift; # reference to giving hash
   while (my ($k, $v) = each %$r) {
      $h->{$k} = $v;
   }
}

答案 1 :(得分:1)

另一种方法是使用array_walk_recursive(),它可以很好地处理迭代;它是隐式完成的,而且速度也很快。因此,如果$ _POST [&#34; items&#34;]类似于以下数组,则此示例代码显示如何测试其键为&#34; key&#34;的元素:

<?php

$arr = ["1" => "a",
        "2" => "b",
        "3" => [10 => "apple",
                11 => "cat", 
                12 => ["key" => "image" ]]];

if ( array_walk_recursive($arr, function($item,$key) {

     if ($key == "key") {
           echo "\nKey is $key and item is $item";
      }


})) { echo "\narray_walk_recursive rocks :)";  }

查看实时code

内置函数array_walk()使编码器不必检查元素是否表示数组或标量值,因为函数具有这种检测。唯一需要的是设计回调函数,在这种情况下是一个匿名函数。