肥皂串转换成php数组

时间:2016-06-20 06:40:01

标签: php arrays soap

关于这些问题:

Soap answert string - convert into arrray

我有肥皂问题:

$result = $soapclient->executeQuery($api_key, $database, $local, $qrf_file, $qif_file, $separator, $output_file, $params);

我有类似肥皂的答案:

Machine     |Number   |Words      |Something else   
Machine2    |Number2  |Words2     |Something else2 
Machine3    |Number3  |Words3     |Something else3

行没有分开。  我需要将soap的答案转换成一些php数组。我试过了:

$test2 = nl2br($result);
$test2 = explode("<br>", $test2);

 $result = explode("|", $result);
 $result2 = trim($result);

我需要这样的数组:

Array {
    Machine1 => Array 
         (
           [mytext]  => Number
           [mytext2] => Words
           [mytext3] => 'Something else' 
          )
     Machine2 => Array 
         (
           [mytext]  => Number2
           [mytext2] => Words2
           [mytext3] => 'Something else2' 
          )
}

等。

请帮助。

此致

2 个答案:

答案 0 :(得分:0)

首先我们运行nl2br,因为这将为每行提供一个共同的结尾,而不管实际的新行字符是什么。然后我们可以将<br />上的字符串拆分成一个数组。这给了我们一个数组,每一行都是自己的元素。从那里,我们遍历每一行,拆分它,修剪这个新数组的每个元素,然后将所需的行/格式添加到“最终”数组。

$result = nl2br($result);
$result = explode("<br />", $result);

$array = array();
foreach ($result as $var) {
    $var = explode("|", $var);
    $var = array_map("trim", $var);
    $array[$var[0]] = array("mytext" => $var[1], "mytext2" => $var[2], "mytext3" => $var[3]);
}
print_r($array);

答案 1 :(得分:0)

你可以像这样尝试爆炸:

$str = "Machine     |Number   |Words      |Something else   
Machine2    |Number2  |Words2     |Something else2 
Machine3    |Number3  |Words3     |Something else3";

$first = explode("\n", $str);   //First explode using new line

$finalArr = [];
foreach ($first as $value) {
    $machines = explode("|", $value);   //Next explode using | operator
    $machines = array_map('trim', $machines);   //Trim the values to remove unwanted spaces
    $machineTitle = $machines[0];  
    $finalArr[$machineTitle] = [];
    unset($machines[0]);    //Unset the first index, we no need this anymore (used so that you can make it for any length of strings)
    foreach ($machines as $key => $value) {
        $finalArr[$machineTitle]["mytext".(($key-1)?:'')] = $value;  ///Just assign things
    }
}

print_r($finalArr);

结果:

Array
(
    [Machine] => Array
        (
            [mytext] => Number
            [mytext1] => Words
            [mytext2] => Something else
        )

    [Machine2] => Array
        (
            [mytext] => Number2
            [mytext1] => Words2
            [mytext2] => Something else2
        )

    [Machine3] => Array
        (
            [mytext] => Number3
            [mytext1] => Words3
            [mytext2] => Something else3
        )

)