我觉得我缺少一些非常简单的东西。在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
数组中...请执行某些操作。
答案 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