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

Search for dynamic key values in foreach loop in php

我觉得我遗漏了一些非常简单的东西。在 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。我希望能够在找到匹配 title* 的键时动态循环 $rec_items 和 'do something' 中的键名。我尝试将计数器变量中的数字推入要搜索的键名中(如下所示):

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 数组中……做点什么。

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

<?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