我正在使用二维数组,并且当我遍历此数组的每个索引时,我试图检查当前键是否等于字符串。< / 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>');
}
答案 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()使编码器不必检查元素是否表示数组或标量值,因为函数具有这种检测。唯一需要的是设计回调函数,在这种情况下是一个匿名函数。