2017-02-23 37 views
1

我有一个看起来像JSON响应这个在阵列替换字符串的一部分PHP

(
    [0] => stdClass Object 

    (
     [default] => false 
     [loc] => http://somethingirrelevant.lol 
     [temp] => '100' 
    ) 

) 

什么,我希望完成在[LOC]的URL更改为https

我试着使用:

$array = preg_replace('http','https' $array); 

但完全破坏数组!

+0

你给向上? – AbraCadaver

回答

0

你不能简单地调用数组,你可以做的是迭代throught它和替换的关键loc每个值:

foreach($array AS $key=>$value) { 
    if(isset($value['LOC'])) { 
     $array[$key]['LOC'] = preg_replace('http','https', $array); 
    } 
} 

你可以投你数组的规则阵列,而不是一个对象:

if(!is_array($array)) $array = (array)array; 
+0

你试过了吗? ==>'语法错误' – Toto

+0

实际上,语法错误是在我复制的原始代码中,但我应该注意到它。谢谢。 – Nicolas

1

您有一个对象数组。数组键0是一个loc属性的对象,你可以在这里使用str_replace()

$array[0]->loc = str_replace('http://', 'https://', $array[0]->loc); 
//$array[0]->loc = preg_replace('#http://#', 'https://', $array[0]->loc); 

如果解码作为数组:

$array = json_decode($json, true); 

然后:

$array[0]['loc'] = str_replace('http://', 'https://', $array[0]['loc']); 
+0

你试过了吗? ==>'语法错误' – Toto

+0

不仅如此,正则表达式必须包含在分隔符之间;) – Toto

+0

我会添加你应该使用wordboundary来避免用'httpss'替换'https' – Toto