【问题标题】:Search part of array key on PHP在 PHP 上搜索数组键的一部分
【发布时间】:2020-10-26 19:37:15
【问题描述】:

使用 print_r 打印名为 yestardayArray 的数组时,我有以下输出:

Array
(
    [project-id] => Array
        (
            [373482] => Array
                (
                    [responsible-ids] => Array
                        (
                            [171812,129938] => Array
                                (
                                    [0] => Array
                                        (
                                            [task-id] => 18055196
                                            [content] => HU-002 
                                            [responsible-ids] => 171812,129938
                                        )

                                )

                            [171812] => Array
                                (
                                    [0] => Array
                                        (
                                            [task-id] => 18055300
                                            [content] => HU-002
                                            [responsible-ids] => 171812
                                        )

                                    [1] => Array
                                        (
                                            [task-id] => 18055307
                                            [content] => HU-002 - BACK 
                                            [responsible-ids] => 171812
                                        )

                                )

                        )

                )

        )

)

我正在通过项目 ID 进行迭代(使用变量 $pid),在本示例中为“373482”,并且还通过 $key 来迭代责任 ID。作为 $key,我正在使用项目的所有可能的责任 ID 值来获得匹配并做一些事情。

在只有一个负责人的情况下效果很好(因为有一个完全匹配),但如果有更多,比如在“171812,129938”中没有匹配。

您将如何验证 $key(171812 或 129938)是否是责任 ID(“171812,129938”)的一部分?

我尝试将数组键转换为字符串,以便使用内置的 php 搜索函数,如 substr_count 或 strpos。

$needString = $yesterdayArray["project-id"][$pid]["responsible-ids"][$key];

但是当我打印 needString 时,我得到的是“Array”而不是“171812,129938”。

我能做什么?

【问题讨论】:

  • 这是一个糟糕的设计。数组键不应该采用需要匹配的格式,它们应该是您可以用作直接查找的格式。
  • 感谢您的评论。我将键更改为在责任 ID 上只有一个值以避免逗号分隔值

标签: php arrays search


【解决方案1】:

在按键上调用explode(),然后使用in_array()检查$key是否在数组中。

foreach ($yesterdayArray["project-id"] as $pid => $project) {
    foreach ($project["responsible-ids"] as $resp_ids => $tasks) {
        $resp_id_array = explode(',', $resp_id);
        if (in_array($key, $resp_id_array)) {
            // do something
        }
    }
}

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多