更改PHP关联数组最里面的值

时间:2012-12-11 14:48:43

标签: php associative-array

我想在PHP中为一个嵌套的关联数组的值附加一个字符串。

以下是我的数组

$styles = array(
    'Screen' => array(
        "master.css",
        "jquery-jvectormap-1.0.css"),
    'handheld' => array("mobile.css") 
     );

通过以下方式对其进行循环更改失败。

foreach($media as $medium => $filename)
foreach($filenames as &$filename)
    $filename = "/styles/".$filename;

使用$medium前缀&只会导致语法错误。

这也失败了。

function prepend($prefix,$string)
{
return $prefix.$string;
}

foreach($media as &$medium)
  $medium = array_map(prepend("/styles"),$medium); 

在给定此数据结构的情况下,"/styles/"前缀为css文件名的最简单方法是什么?

3 个答案:

答案 0 :(得分:2)

试试这个:

$styles = array(
    'Screen' => array(
        "master.css",
        "jquery-jvectormap-1.0.css"),
    'handheld' => array("mobile.css") 
     );

foreach($styles as $k=>$v){
    foreach($v as $a=>$b){
        $styles[$k][$a] = '/styles/'.$b;
    }
}

print_r($styles);

答案 1 :(得分:2)

试试这个:

foreach($styles as $medium => &$filenames) {
  foreach($filenames as &$filename) {
    $filename = "/styles/".$filename;
  }
}

一些提示:

  • 使用大括号构建嵌套代码。这将使你(和php)更好地理解你的意思
  • 使用缩进。这将为您提供更好的概述。
  • 使用Array-Variable的单数命名迭代变量(即foreach($ apples as $ apple))。这将为您提供额外的提示,说明您正在处理的变量。

祝你好运!

答案 2 :(得分:0)

foreach($media as $medium => $filenames) {
    foreach($filenames as $key => $filename) {
        $media[$medium][$key] = "/styles/" . $filename;
    }
}