array_walk并在php或Javascript中替换(php js)

时间:2009-08-15 06:29:20

标签: php javascript arrays

这是我的阵列:

$frndof = array(
        "name" => 'frnd_of_xyx',
        "id" => 001,
        "url" => 'example.com/frnd_of_xyx',
        "address" => array(
                "city" => 'NewZend',
                "zip" => '100450'));
$frndof1 = array(
        "name" => 'frnd_of_xyx1',
        "id" => 0011,
        "url" => 'example.com/frnd_of_xyx1',
        "frnds" => $frndof,
        "address" => array(
                "city" => 'NewZend1',
                "zip" => '100422'));
$a = array(
        array(
                "name" => 'xyx',
                "id" => 001,
                "url" => 'example.com/xyx',
                "address" => array(
                        "city" => 'cochin',
                        "zip" => '100450')),
        array(
                "name" => 'abc',
                "id" => 001,
                "url" => 'example.com/abc',
                "frnds" => $frndof1,
                "address" => array(
                        "city" => 'Bosco',
                        "zip" => '100450')),
        array(
                "name" => 'EFG',
                "id" => 001,
                "url" => 'example.com/EFG',
                "address" => array(
                        "city" => 'NY',
                        "zip" => '100450')));

我需要用

替换以下数组array_fig(1)
[frnds] => Array
(
    [name] => frnd_of_xyx
    [id] => 1
    [url] =>example.com/frnd_of_xyx /* this is the unique key */
    [address] => Array
        (
            [city] => NewZend
            [zip] => 100450
        )
)

array_fig(2)

[frnds] => Array
(
    [name] => frnd_of_xyx
    [id] => 1
    [url] =>example.com/frnd_of_xyx /* this is the unique key */
    [address] => Array
        (
            [city] => NewZend_neww
            [zip] => 1004501212122
        )
)

Key URL是唯一键。 [frnds]数组需要替换为新的[frnds]数组。 即如何使用“ [url] ”键作为唯一键来查找父键或数组键。

**注意:**此数组用于生成XML,因此,这些是元素和属性,因此内部元素概念

1 个答案:

答案 0 :(得分:0)

由于您没有将关键字段用作数组中的实际关键字,唯一可用的技术是线性搜索,即使用foreach迭代整个数组。

$found=false;
foreach ($myarray as $key=>$val)
{
    if ($val['url']==$targetURL)
    {
        $myarray[$key]['address']=$newAddress;
        $found=true;
        break; 
    }
}

在Javascript中,类似这样的

   var found=false;
   var key;
   for (key in myarray)
   {
       if (myarray[key]['url']==targetURL)
       {
             myarray[key]['address']=newAddress;
             found=true;
             break;
       }
   }