我需要使用 php 更改关联数组中匹配键的所有值,但我只能通过匹配键中的特定字符串来定位键,而不是整个键名称,因为它可能会更改。
在下面的情况下,我需要一种方法来定位所有“_file”键并将其文件名更改为相关的附件 ID,但定位整个键“bg_infographic_file”是不可能的,因为该键可能会更改为“bg_whitepaper_file” “或其他名称。
当前$resources数组:
Array
(
[0] => Array
(
[bg_infographic_title] => Logo Upload
[bg_infographic_file] => logomark-large-forVector.png
)
[1] => Array
(
[bg_infographic_title] => Profile Image
[bg_infographic_file] => ProfilePic.jpg
)
[2] => Array
(
[bg_infographic_title] => Document Upload
[bg_infographic_file] => Test_PDF.pdf
)
)
我需要的结果:
Array
(
[0] => Array
(
[bg_infographic_title] => Logo Upload
[bg_infographic_file] => 86390
)
[1] => Array
(
[bg_infographic_title] => Profile Image
[bg_infographic_file] => 99350
)
[2] => Array
(
[bg_infographic_title] => Document Upload
[bg_infographic_file] => 67902
)
)
我正在考虑一些类似的事情,但我不太明白,因为以下内容只是返回未更改的数组数据:
foreach( $resources as $key=>$value ) {
if( strpos($key, '_file') !== FALSE ) {
$value = get_image_id_from_url($value);
}
}
感谢您的帮助!
最佳答案
这样做:
foreach ($resources as $key => $value) {
foreach ($value as $subKey => $subValue) {
if (substr($subKey, -5) == '_file') {
$resources[$key][$subKey] = get_image_id_from_url($subValue);
}
}
}
第一个问题是您有一个数组数组,而您仅循环访问外部数组。第二个问题是 $value
不能以这种方式在 foreach()
循环内修改。我们还可以使用 substr($key, -5) == '_file'
来确保 '_file'
位于字符串的末尾。
关于php - 如果键以特定单词结尾,则通过函数调用修改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38299274/