首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换数组PHP中的值

问替换数组PHP中的值
EN

Stack Overflow用户
提问于 2017-07-27 02:23:08
回答 1查看 39关注 0票数 1

我需要在多层数组中进行搜索和替换。我只是一直没能让它工作。我知道这是很简单的事情。我是不是应该看一看走动或字符串替换。似乎什么都不起作用。

I此数组:

代码语言:javascript
复制
ATWS\AutotaskObjects\QueryResponse Object
(
    [queryResult] => ATWS\AutotaskObjects\ATWSResponse Object
        (
            [EntityResults] => ATWS\AutotaskObjects\ArrayOfEntity Object
                (
                    [Entity] => Array
                        (
                            [0] => ATWS\AutotaskObjects\Entity Object
                                (
                                    [Fields] =>
                                    [UserDefinedFields] => ATWS\AutotaskObjects\ArrayOfUserDefinedField Object
                                        (
                                            [UserDefinedField] =>
                                        )

                                    [id] => 35
                                    [AccountID] => 218
                                    [AlertTypeID] => 1
                                    [AlertText] => test
                                )

                            [1] => ATWS\AutotaskObjects\Entity Object
                                (
                                    [Fields] =>
                                    [UserDefinedFields] => ATWS\AutotaskObjects\ArrayOfUserDefinedField Object
                                        (
                                            [UserDefinedField] =>
                                        )

                                    [id] => 36
                                    [AccountID] => 218
                                    [AlertTypeID] => 2
                                    [AlertText] => test2
                                )

                            [2] => ATWS\AutotaskObjects\Entity Object
                                (
                                    [Fields] =>
                                    [UserDefinedFields] => ATWS\AutotaskObjects\ArrayOfUserDefinedField Object
                                        (
                                            [UserDefinedField] =>
                                        )

                                    [id] => 37
                                    [AccountID] => 218
                                    [AlertTypeID] => 3
                                    [AlertText] => test3
                                )

                        )

                )

            [EntityResultType] => accountalert
            [EntityReturnInfoResults] => ATWS\AutotaskObjects\ArrayOfEntityReturnInfo Object
                (
                    [EntityReturnInfo] => Array
                        (
                            [0] => ATWS\AutotaskObjects\EntityReturnInfo Object
                                (
                                    [DatabaseAction] => None
                                    [DuplicateStatus] => ATWS\AutotaskObjects\EntityDuplicateStatus Object
                                        (
                                            [Found] =>
                                            [Ignored] =>
                                            [MatchInfo] =>
                                            [Fields] =>
                                            [UserDefinedFields] =>
                                        )

                                    [EntityId] => 35
                                    [Message] =>
                                    [Fields] =>
                                    [UserDefinedFields] =>
                                )

                            [1] => ATWS\AutotaskObjects\EntityReturnInfo Object
                                (
                                    [DatabaseAction] => None
                                    [DuplicateStatus] => ATWS\AutotaskObjects\EntityDuplicateStatus Object
                                        (
                                            [Found] =>
                                            [Ignored] =>
                                            [MatchInfo] =>
                                            [Fields] =>
                                            [UserDefinedFields] =>
                                        )

                                    [EntityId] => 36
                                    [Message] =>
                                    [Fields] =>
                                    [UserDefinedFields] =>
                                )

                            [2] => ATWS\AutotaskObjects\EntityReturnInfo Object
                                (
                                    [DatabaseAction] => None
                                    [DuplicateStatus] => ATWS\AutotaskObjects\EntityDuplicateStatus Object
                                        (
                                            [Found] =>
                                            [Ignored] =>
                                            [MatchInfo] =>
                                            [Fields] =>
                                            [UserDefinedFields] =>
                                        )

                                    [EntityId] => 37
                                    [Message] =>
                                    [Fields] =>
                                    [UserDefinedFields] =>
                                )

                        )

                    [Fields] =>
                    [UserDefinedFields] =>
                )

            [Errors] => ATWS\AutotaskObjects\ArrayOfATWSError Object
                (
                    [ATWSError] =>
                    [Fields] =>
                    [UserDefinedFields] =>
                )

            [ReturnCode] => 1
        )

)

我想把所有的“测试”替换成“是”

我一直在试着用

代码语言:javascript
复制
$replacevalue = 'Jon';
function array_replacing(&$item, $key)
{
    if($value== 'test')
        $item = $replacevalue;
}

array_walk_recursive($result, 'array_replacing');

但不起作用。我甚至试过str_replace。不走运。你能帮上忙吗?

完整代码:(减去授权)

代码语言:javascript
复制
$authWsdl = 'https://webservices.autotask.net/atservices/1.5/atws.wsdl';
$opts = array('trace' => 1);
$client = new ATWS\Client($authWsdl, $opts);
$zoneInfo = $client->getZoneInfo($username);

//print_r($zoneInfo);

$authOpts = array(
    'login' => $username,
    'password' => $password,
    'trace' => 1,   // Allows us to debug by getting the XML requests sent
);
$wsdl = str_replace('.asmx', '.wsdl', $zoneInfo->getZoneInfoResult->URL);
$client = new ATWS\Client($wsdl, $authOpts);

$query = new ATWS\AutotaskObjects\Query('AccountAlert');

$Alerttexttoreplace = new ATWS\AutotaskObjects\QueryField('AlertText');
$lookvalue = 'test';
$Alerttexttoreplace->addExpression('contains', $lookvalue);

$query->addField($Alerttexttoreplace);

//$AccountID->$query($AccountID)
//print_r($AccountID)
//$updatequery = $query->update($query)

// If you want to debug the XML produced by the Query object
// print($query->asXml());

// Print the results of the query
//print_r($client->query($query));

//set limited aray
$result = $client->query($query);
//print_r ($result);
//die();
$final = $result->queryResult->EntityResults->Entity;
//print_r ($final);

//Replace value in array

$replacevalue = 'Jon';

foreach ($final as $key=>$val) 
    {
        if ($key='AlertText' ) 
        {
            //$final = str_replace($lookvalue,$replacevalue,$val=>'AlertText');
            echo 'old';
            print_r($val);
            echo 'new';
            print_r($newval);
        }

    }





//print_r ($final);
die(end);
EN

回答 1

Stack Overflow用户

发布于 2017-07-27 02:38:15

您尚未定义$value,只需将其更改为:

代码语言:javascript
复制
function array_replacing(&$item, $key)
{
    if($item == 'test')
        $item = $replacevalue;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45334724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档