在 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
我觉得我遗漏了一些非常简单的东西。在 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