php - 在php的foreach循环中搜索动态键值
问题描述
我觉得我错过了一些非常简单的东西。在 php foreach 循环中迭代 $key 名称组合的最佳方法是什么——为每个名称做不同的事情?
我在一个数组中有许多值,它们的键值遵循相同的命名格式。
例子:
$rec_items['title3'] = implode($meta['title3']);
$rec_items['title4'] = implode($meta['title4']);
$rec_items['title5'] = implode($meta['title5']);
该$rec_items
数组还包含其他不遵循此命名约定(或数据类型)的值。
我正在$rec_items
使用 foreach 循环进行循环。我希望能够动态循环通过 $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
数组中......做一些事情。
解决方案
我不确定您的原始代码在尝试什么;您似乎将数组键视为数组本身?使用变量变量?无论如何,您只需要对密钥进行简单的字符串搜索。您可以使用正则表达式或您喜欢的任何内容进行更复杂的匹配。
<?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 - PHP gettext 在 Homestead 中返回输入作为结果
- react-native - 不变违规:元素类型无效:期望字符串或类/函数,但得到:未定义。
- java - PriorityQueue 抛出类强制转换异常
- php - 获取外键值不是 id SQL
- javascript - *ngFor 强制按升序打印
- c# - *(decimal*)d=XXXm 导致另一个输出而不是 BinaryWriter.Write(XXXm)
- url - 在 URL 中没有凭据的 Jenkins 的 Webhook
- android - Google Maps API 在 Android 上显示灰屏而不是地图视图
- python - 如果存在通过第二条路径的连接,则连接来自二分图的一部分的节点
- java - Android 8.0 - Job Intent Service 在启动时不运行应用程序