如何在php中替换嵌套数组值

如何在php中替换嵌套数组值,php,arrays,Php,Arrays,它是我的数组值 在这里,我发送了一些值,例如该酒店的酒店id和徽标 但我应该需要发送作为图像URL的标志 i、 e:,对于此:1463466926-97157549.jpg 我需要把它作为 http://localhost/abservetech/laravel/abserve_crud_travelz/public/1463466926-97157549.jpg 通过添加该图像的路径 最后,我的数组应该是这样的 Array ( [0] => Array (

它是我的数组值

在这里,我发送了一些值,例如该酒店的
酒店id
徽标

但我应该需要发送作为图像URL的标志

i、 e:,对于此:
1463466926-97157549.jpg
我需要把它作为
http://localhost/abservetech/laravel/abserve_crud_travelz/public/1463466926-97157549.jpg

通过添加该图像的路径

最后,我的数组应该是这样的

Array
(
    [0] => Array
        (
            [hotel_id] => 79
            [logo] => 1463466926-97157549.jpg
        )

    [1] => Array
        (
            [hotel_id] => 78
            [logo] => 1463466942-15603675.jpg
        )

    [2] => Array
        (
            [hotel_id] => 77
            [logo] => 1463466953-25200244.jpg
        )

    [3] => Array
        (
            [hotel_id] => 76
            [logo] => 1463466967-62926110.jpg
        )

    [4] => Array
        (
            [hotel_id] => 75
            [logo] => 
        )

    [5] => Array
        (
            [hotel_id] => 74
            [logo] => 
        )

)
这里,最后两个酒店有空图像

为此,我发送了一个默认图像URL,如
http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg

像这样

Array
(
    [0] => Array
        (
            [hotel_id] => 79
            [logo] => 1463466926-97157549.jpg
        )

    [1] => Array
        (
            [hotel_id] => 78
            [logo] => 1463466942-15603675.jpg
        )

    [2] => Array
        (
            [hotel_id] => 77
            [logo] => 1463466953-25200244.jpg
        )

    [3] => Array
        (
            [hotel_id] => 76
            [logo] => 1463466967-62926110.jpg
        )

    [4] => Array
        (
            [hotel_id] => 75
            [logo] => 
        )

    [5] => Array
        (
            [hotel_id] => 74
            [logo] => 
        )

)
有人能帮我吗

先谢谢你

我已经这样试过了

Array
(
    [0] => Array
        (
            [hotel_id] => 79
            [logo] => http://localhost/abservetech/laravel/abserve_crud_travelz/public/1463466926-97157549.jpg
        )

    [1] => Array
        (
            [hotel_id] => 78
            [logo] => http://localhost/abservetech/laravel/abserve_crud_travelz/public/1463466942-15603675.jpg
        )

    [2] => Array
        (
            [hotel_id] => 77
            [logo] => http://localhost/abservetech/laravel/abserve_crud_travelz/public/1463466953-25200244.jpg
        )

    [3] => Array
        (
            [hotel_id] => 76
            [logo] => http://localhost/abservetech/laravel/abserve_crud_travelz/public/1463466967-62926110.jpg
        )

    [4] => Array
        (
            [hotel_id] => 75
            [logo] => http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg
        )

    [5] => Array
        (
            [hotel_id] => 74
            [logo] => http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg
        )

)
这里,
\URL::to(“”)。“/”
是我的路径,
$Roo
是我的数组


但是,它只在单独的数组中检索
徽标。

说您的数组名是
$arr
,因此开始遍历整个数组,如果酒店id匹配,则用新徽标替换您的徽标

$im =array();
foreach ($Roo as $key => $value) 
{
    $im[]=(\URL::to('').'/'.$value['logo']);
}
使用
&
意味着数组是引用的,因此您在此处更改的内容必须在主数组中更新,这是可选的

foreach($hotel_details as $key => $detail) {

    if(!empty($detail['logo']) {

        $detail['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/'.$detail['logo']
        $hotel_destails[$key] = $detail

    } else {

        $detail['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg'
        $hotel_destails[$key] = $detail

    }
}
注意:如果您想更改整个阵列,那么它将非常容易, 只需删除if条件


假设您的阵列名称为
$arr
,那么开始遍历整个阵列,如果酒店id匹配,则用新的徽标替换您的徽标

使用
&
意味着数组是引用的,因此您在此处更改的内容必须在主数组中更新,这是可选的

foreach($hotel_details as $key => $detail) {

    if(!empty($detail['logo']) {

        $detail['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/'.$detail['logo']
        $hotel_destails[$key] = $detail

    } else {

        $detail['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg'
        $hotel_destails[$key] = $detail

    }
}
注意:如果您想更改整个阵列,那么它将非常容易, 只需删除if条件


循环遍历阵列并按如下方式更新阵列:

$path = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/';
$hotel_id = 79;

foreach($arr as $key => &$value){
    if($value['hotel_id'] == $hotel_id){
       $value['logo'] = $path.$value['logo'];
       break;
    }
}

print_r($arr);

循环遍历阵列并按如下方式更新阵列:

$path = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/';
$hotel_id = 79;

foreach($arr as $key => &$value){
    if($value['hotel_id'] == $hotel_id){
       $value['logo'] = $path.$value['logo'];
       break;
    }
}

print_r($arr);

你应该查一下

使用此条目数组:

foreach ($array as $key => &$value) {
    if ($value['logo'] != '') {
        $value['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/'.$value['logo'];
    } else {
        $value['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg';
    }
}
print_r($array);
Array
(
    [0] => Array
        (
            [hotel_id] => 0
            [logo] => image_0.jpg
        )

    [1] => Array
        (
            [hotel_id] => 1
            [logo] => image_1.jpg
        )

    [2] => Array
        (
            [hotel_id] => 2
            [logo] => image_2.jpg
        )

    [3] => Array
        (
            [hotel_id] => 3
            [logo] => 
        )

    [4] => Array
        (
            [hotel_id] => 4
            [logo] => image_4.jpg
        )

)
Array
(
    [0] => Array
        (
            [hotel_id] => 0
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_0.jpg
        )

    [1] => Array
        (
            [hotel_id] => 1
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_1.jpg
        )

    [2] => Array
        (
            [hotel_id] => 2
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_2.jpg
        )

    [3] => Array
        (
            [hotel_id] => 3
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/300x300.jpg
        )

    [4] => Array
        (
            [hotel_id] => 4
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_4.jpg
        )

)
您可以获得以下输出数组:

foreach ($array as $key => &$value) {
    if ($value['logo'] != '') {
        $value['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/'.$value['logo'];
    } else {
        $value['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg';
    }
}
print_r($array);
Array
(
    [0] => Array
        (
            [hotel_id] => 0
            [logo] => image_0.jpg
        )

    [1] => Array
        (
            [hotel_id] => 1
            [logo] => image_1.jpg
        )

    [2] => Array
        (
            [hotel_id] => 2
            [logo] => image_2.jpg
        )

    [3] => Array
        (
            [hotel_id] => 3
            [logo] => 
        )

    [4] => Array
        (
            [hotel_id] => 4
            [logo] => image_4.jpg
        )

)
Array
(
    [0] => Array
        (
            [hotel_id] => 0
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_0.jpg
        )

    [1] => Array
        (
            [hotel_id] => 1
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_1.jpg
        )

    [2] => Array
        (
            [hotel_id] => 2
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_2.jpg
        )

    [3] => Array
        (
            [hotel_id] => 3
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/300x300.jpg
        )

    [4] => Array
        (
            [hotel_id] => 4
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_4.jpg
        )

)
只需这样做:

foreach ($array as $key => &$value) {
    if ($value['logo'] != '') {
        $value['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/'.$value['logo'];
    } else {
        $value['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg';
    }
}
print_r($array);
Array
(
    [0] => Array
        (
            [hotel_id] => 0
            [logo] => image_0.jpg
        )

    [1] => Array
        (
            [hotel_id] => 1
            [logo] => image_1.jpg
        )

    [2] => Array
        (
            [hotel_id] => 2
            [logo] => image_2.jpg
        )

    [3] => Array
        (
            [hotel_id] => 3
            [logo] => 
        )

    [4] => Array
        (
            [hotel_id] => 4
            [logo] => image_4.jpg
        )

)
Array
(
    [0] => Array
        (
            [hotel_id] => 0
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_0.jpg
        )

    [1] => Array
        (
            [hotel_id] => 1
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_1.jpg
        )

    [2] => Array
        (
            [hotel_id] => 2
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_2.jpg
        )

    [3] => Array
        (
            [hotel_id] => 3
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/300x300.jpg
        )

    [4] => Array
        (
            [hotel_id] => 4
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_4.jpg
        )

)

其中,
$arr
是包含您的酒店的阵列,
$res
将是修改后的阵列。

您应该在那里查看

使用此条目数组:

foreach ($array as $key => &$value) {
    if ($value['logo'] != '') {
        $value['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/'.$value['logo'];
    } else {
        $value['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg';
    }
}
print_r($array);
Array
(
    [0] => Array
        (
            [hotel_id] => 0
            [logo] => image_0.jpg
        )

    [1] => Array
        (
            [hotel_id] => 1
            [logo] => image_1.jpg
        )

    [2] => Array
        (
            [hotel_id] => 2
            [logo] => image_2.jpg
        )

    [3] => Array
        (
            [hotel_id] => 3
            [logo] => 
        )

    [4] => Array
        (
            [hotel_id] => 4
            [logo] => image_4.jpg
        )

)
Array
(
    [0] => Array
        (
            [hotel_id] => 0
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_0.jpg
        )

    [1] => Array
        (
            [hotel_id] => 1
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_1.jpg
        )

    [2] => Array
        (
            [hotel_id] => 2
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_2.jpg
        )

    [3] => Array
        (
            [hotel_id] => 3
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/300x300.jpg
        )

    [4] => Array
        (
            [hotel_id] => 4
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_4.jpg
        )

)
您可以获得以下输出数组:

foreach ($array as $key => &$value) {
    if ($value['logo'] != '') {
        $value['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/'.$value['logo'];
    } else {
        $value['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg';
    }
}
print_r($array);
Array
(
    [0] => Array
        (
            [hotel_id] => 0
            [logo] => image_0.jpg
        )

    [1] => Array
        (
            [hotel_id] => 1
            [logo] => image_1.jpg
        )

    [2] => Array
        (
            [hotel_id] => 2
            [logo] => image_2.jpg
        )

    [3] => Array
        (
            [hotel_id] => 3
            [logo] => 
        )

    [4] => Array
        (
            [hotel_id] => 4
            [logo] => image_4.jpg
        )

)
Array
(
    [0] => Array
        (
            [hotel_id] => 0
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_0.jpg
        )

    [1] => Array
        (
            [hotel_id] => 1
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_1.jpg
        )

    [2] => Array
        (
            [hotel_id] => 2
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_2.jpg
        )

    [3] => Array
        (
            [hotel_id] => 3
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/300x300.jpg
        )

    [4] => Array
        (
            [hotel_id] => 4
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_4.jpg
        )

)
只需这样做:

foreach ($array as $key => &$value) {
    if ($value['logo'] != '') {
        $value['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/'.$value['logo'];
    } else {
        $value['logo'] = 'http://localhost/abservetech/laravel/abserve_crud_travelz/public/300x300.jpg';
    }
}
print_r($array);
Array
(
    [0] => Array
        (
            [hotel_id] => 0
            [logo] => image_0.jpg
        )

    [1] => Array
        (
            [hotel_id] => 1
            [logo] => image_1.jpg
        )

    [2] => Array
        (
            [hotel_id] => 2
            [logo] => image_2.jpg
        )

    [3] => Array
        (
            [hotel_id] => 3
            [logo] => 
        )

    [4] => Array
        (
            [hotel_id] => 4
            [logo] => image_4.jpg
        )

)
Array
(
    [0] => Array
        (
            [hotel_id] => 0
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_0.jpg
        )

    [1] => Array
        (
            [hotel_id] => 1
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_1.jpg
        )

    [2] => Array
        (
            [hotel_id] => 2
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_2.jpg
        )

    [3] => Array
        (
            [hotel_id] => 3
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/300x300.jpg
        )

    [4] => Array
        (
            [hotel_id] => 4
            [logo] => http://some_addr.tld/some_dir/some_sub_dir/image_4.jpg
        )

)

其中,
$arr
是包含酒店的阵列,
$res
将是修改后的阵列。

您可以通过以下代码实现这一点:

$base = 'http://some_addr.tld/some_dir/some_sub_dir/';

$default = '300x300.jpg';

$res = array_map(
    function($x) use ($base, $default)
    {
        if ( array_key_exists( 'logo', $x ) )
        {
            if ( !empty( $x['logo'] ) )
            {
                $x['logo'] = $base . $x['logo'];
            }
            else
            {
                $x['logo'] = $base . $default;
            }
        }

        return $x;
    }
    , $arr);

您可以通过以下代码实现这一点:

$base = 'http://some_addr.tld/some_dir/some_sub_dir/';

$default = '300x300.jpg';

$res = array_map(
    function($x) use ($base, $default)
    {
        if ( array_key_exists( 'logo', $x ) )
        {
            if ( !empty( $x['logo'] ) )
            {
                $x['logo'] = $base . $x['logo'];
            }
            else
            {
                $x['logo'] = $base . $default;
            }
        }

        return $x;
    }
    , $arr);

到目前为止你尝试了什么?非常不清楚和模糊。。。我建议改变你的问题:你期望什么样的调用(输入)?输出是什么?你能提供一个工作案例吗?你能提供一些你已经做过的尝试吗?使用foreach循环,遍历整个数组,如果
酒店id
匹配,用新的替换你的
徽标。@Frayne Konok你能用一个例子解释一下吗..请说明你到目前为止做了什么?非常不清楚和模糊。。。我建议改变你的问题:你期望什么样的调用(输入)?输出是什么?你能提供一个工作案例吗?你能提供一些你做过的尝试吗?使用foreach循环,遍历整个数组,如果
酒店id
匹配,用新的替换你的
徽标。@Frayne Konok你能用一个例子解释一下吗..请简单明了:)…但我不知道你为什么在
$value
之前使用
&
,添加后,只会将结果作为参考。查看Hoo fine中的参考资料。谢谢:)简单易用:)…但我不知道为什么在添加该参考资料之后,在添加$value之前使用
&
,而在添加该参考资料之后,只使用结果作为参考。查看Hoo fine中的参考资料。谢谢:)谢谢Frayne Konok,为什么为
hotel\u id
赋值,在我的数组中,hotel\u id可以根据我的结果随机更改。为什么您在这里使用此行我发送了一些值,例如hotel\u id和该酒店的徽标???谢谢Frayne Konok,为什么您为
酒店id
分配值,在我的数组中,酒店id可以根据我的结果随机更改为什么您在这里使用此行我发送了一些值,例如酒店id和该酒店的徽标。。???