在PHP的foreach循环中搜索动态键值

时间:2018-12-21 19:25:40

标签: php arrays wordpress foreach key-value

我觉得我缺少一些非常简单的东西。在php foreach循环中,通过$ key名称的组合进行迭代的最佳方法是什么-每种方法做不同的事情?

我在数组中有许多值,键值遵循相同的命名格式。

示例:

$rec_items['title3'] = implode($meta['title3']);
$rec_items['title4'] = implode($meta['title4']);
$rec_items['title5'] = implode($meta['title5']);

$rec_items数组还包含不遵循此命名约定(或数据类型)的其他值。

我正在使用foreach循环遍历$rec_items。我希望能够动态循环浏览$ rec_items中的键名,并在找到与title*匹配的键时“执行某些操作”。我尝试将计数器变量中的数字推入要搜索的键名中(如下所示):

foreach ($rec_items as $key => $value){
    $c = 0;
    if(!empty($key[${'title'.$c}]){
        $c++;
        //do something


}

我相信我无法将值${'title'.$c}传递到$key[]中,并试图将值${'title'.$c}传递为没有运气的字符串。

我只是分享以上内容,以强调我要实现的目标。

(1)以'title *'格式动态遍历键名

(2)如果键名存在于$rec_items数组中...请执行某些操作。

1 个答案:

答案 0 :(得分:1)

我不确定您的原始代码在尝试什么;您似乎像对待数组本身一样对待数组键?使用变量变量?无论如何,您只需要对键进行简单的字符串搜索。您可以使用正则表达式或任何您喜欢的东西进行更复杂的匹配。

<?php
$rec_items = ["foo"=>12, "bar"=>34, "title1"=>56, "title2"=>78, "baz"=>90];
foreach ($rec_items as $k=>$v) {
    if (strpos($k, "title") === 0) {
        echo "$k = $v\n";
    }
}

输出:

title1 = 56
title2 = 78