【问题标题】:Preg replace an arrayPreg 替换一个数组
【发布时间】:2017-04-22 15:47:25
【问题描述】:

我正在尝试替换正在通过管道传输到数组中的获取 url

这是原始代码

$res['images'] = array();
$res['images'][] = (string)$item->LargeImage->URL;
if (count($item->ImageSets) > 0) {
$count = 0;
foreach ($item->ImageSets->ImageSet as $key => $value) {
if ($count > 5) continue;
if (isset($value->LargeImage->URL) && $count > 0) {
$res['images'][] = (string)$value->LargeImage->URL;
      }
        $count++;
         }
       }

我需要做的是将变量 $rest['images'][] 或我感到困惑的 $item 替换为类似的东西

 $res['images'] = array();
 $res['imagesLow'][] = (string)$item->LargeImage->URL;
 $res['Images'][] = preg_replace('/\\.[^.\\s]{3,4}$/', '._UL1500_.jpg', $res['imagesLow'][]);      
                if (count($item->ImageSets) > 0) {
                    $count = 0;
                    foreach ($item->ImageSets->ImageSet as $key => $value) {
                        if ($count > 5) continue;
                        if (isset($value->LargeImage->URL) && $count > 0) {
                        $res['images'][] = (string)$value->LargeImage->URL;
                        }
                        $count++;
                    }
                }

但这对于 $res['imagesLow'][] 中的最后一个变量包含 [] 是不可接受的。

$res['Images'][] = preg_replace('/\\.[^.\\s]{3,4}$/', '._UL1500_.jpg', $res['imagesLow'][]);      

它给了我错误 500 我做错了什么?

主要思想是将获取的 .JPG 部分 url 替换为“.UL1500.jpg”

【问题讨论】:

  • 您不能以这种方式访问​​数组的最后插入项。将值保存在临时变量中或使用$res['imagesLow'][count(res['imagesLow'])-1]
  • 你能提供整个代码修复吗?我还在学习
  • f.e., $temp = $res['imagesLow'][] = (string)$item->LargeImage->URL; 并在下一条语句中使用 temp

标签: php arrays preg-replace


【解决方案1】:

如果你想对数组的每个元素应用一个函数,你通常使用array_map

看起来像这样

$mapped = array_map(function($item) {
    return something with $item;
}, $array);

如果是 preg_replace,您也可以将数组作为主题参数传递。如果您传递一个数组,您也会返回一个数组。

$res['Images'] = preg_replace('/\\.[^.\\s]{3,4}$/', '._UL1500_.jpg', $res['imagesLow']);

【讨论】:

  • 能否提供完整的修复代码,我仍在学习过程中
【解决方案2】:

$res['imagesLow'][] = (string)$item->LargeImage->URL; 行向$res['imagesLow'] 数组添加了一个新元素。

为了检索该值,您需要 $res['imagesLow'] 数组的最后一个值。

你可以得到最后一个值end($res['imagesLow'])

但是,再次使用原始变量(string)$item->LargeImage->URL 会更有意义

编辑

换行:

$res['Images'][] = preg_replace('/\\.[^.\\s]{3,4}$/', '._UL1500_.jpg', $res['imagesLow'][])

与:

$res['Images'][] = preg_replace('/\\.[^.\\s]{3,4}$/', '._UL1500_.jpg', (string)$item->LargeImage->URL);

【讨论】:

  • 能否提供完整的修复代码,我仍在学习过程中
猜你喜欢
  • 2012-01-26
  • 2017-01-05
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多