关于这些问题:
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'
)
}
等。
请帮助。
此致
答案 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
)
)