首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP:检查键是否等于字符串

PHP:检查键是否等于字符串
EN

Stack Overflow用户
提问于 2017-07-14 23:08:28
回答 2查看 2.2K关注 0票数 1

我正在处理一个二维数组,当我遍历这个数组的每个索引时,我试图检查当前键是否等于一个字符串。

我就是这么做的:

代码语言:javascript
运行
复制
foreach($_POST['items'] as $index => $item){

    $key = key($item);

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

}

这将引发为foreach()提供的错误无效参数。

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

var_dump

代码语言:javascript
运行
复制
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的表单中的元素

代码语言:javascript
运行
复制
<div><input type="file" name="items[][image]" id="uploadImage" multiple></div>

动态格式的var_dump,1图像输入,1段输入

代码语言:javascript
运行
复制
array(1) { 
    [0]=> array(1) { ["paragraph"]=> string(11) "paragraph 1" } 
} 

var_dump没有看到名称为image?的输入。

这里是表单,它的内容是从<script>动态添加的

代码语言:javascript
运行
复制
<form method="post" action="insert.php" enctype="multipart/form-data">

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

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

动态添加函数之一(此函数用于图像输入)

代码语言:javascript
运行
复制
    function addImage() {
    $("form").append('<div><input type="file" name="items[][image]" id="uploadImage" multiple></div>');
}
EN

回答 2

Stack Overflow用户

发布于 2017-07-14 23:13:06

检查$_POST‘’items‘是否是一个数组

代码语言:javascript
运行
复制
if(is_array($_POST['items'])){
    foreach($_POST['items'] as $index => $item){

        $key = key($item);

        if($key == 'image'){
            echo 'hello';
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2017-07-15 00:42:45

另一种方法是使用递归(),它很好地为您处理迭代;它是隐式完成的,而且速度也很快。因此,如果$_POST"items“类似于以下数组,则此示例代码将演示如何测试其键为”key“的元素:

代码语言:javascript
运行
复制
<?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()避免了编码器也必须检查元素是表示数组还是标量值,因为该函数具有这种检测。唯一需要的是设计回调函数,在这种情况下,回调函数是一个匿名函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45112761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档