我正在处理一个二维数组,当我遍历这个数组的每个索引时,我试图检查当前键是否等于一个字符串。
我就是这么做的:
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>');
}发布于 2017-07-14 23:13:06
检查$_POST‘’items‘是否是一个数组
if(is_array($_POST['items'])){
foreach($_POST['items'] as $index => $item){
$key = key($item);
if($key == 'image'){
echo 'hello';
}
}
}发布于 2017-07-15 00:42:45
另一种方法是使用递归(),它很好地为您处理迭代;它是隐式完成的,而且速度也很快。因此,如果$_POST"items“类似于以下数组,则此示例代码将演示如何测试其键为”key“的元素:
<?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 :)"; }见live 代码。
内置函数array_walk()避免了编码器也必须检查元素是表示数组还是标量值,因为该函数具有这种检测。唯一需要的是设计回调函数,在这种情况下,回调函数是一个匿名函数。
https://stackoverflow.com/questions/45112761
复制相似问题