Php将数据分解为数组
我资助了几篇文章将数据分解为数组,但我的文章有点具体,因为数据有两部分 我有这个Php将数据分解为数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我资助了几篇文章将数据分解为数组,但我的文章有点具体,因为数据有两部分 我有这个 title=Title1|link=Link1 title=Title2|link=Link2 我需要的结果就是这个 Array ( [0] => Array ( [title] => Title1 [link] => Link1 ) [1] => Array (
title=Title1|link=Link1
title=Title2|link=Link2
我需要的结果就是这个
Array
(
[0] => Array
(
[title] => Title1
[link] => Link1
)
[1] => Array
(
[title] => Title2
[link] => Link2
)
)
数据来自由\n分隔的texarea,因此您看到的数据是实际数据
谢谢大家!
preg_match_all('~^title=(.+)\|link=(.+)$~m', $text, $reg, PREG_SET_ORDER);
print\r($reg)
products
Array
(
[0] => Array
(
[0] => title=Title1|link=Link1
[1] => Title1
[2] => Link1
)
[1] => Array
(
[0] => title=Title2|link=Link2
[1] => Title2
[2] => Link2
)
)
我相信您可以很容易地修改它以符合您所需的模式。可能类似于这样,它有点冗长,但您应该能够将其用作更优雅的基础
<?
$result=array();
foreach ($line in $iterable_variable_with_one_line_per_iteration){
$subresult=array();
foreach ($kv_pair in explode($line,"|")){
$kv_pair_2 = explode($kv_pair,"=");
$subresult[kv_pair_2[0]]=$kv_pair_2[1];
}
array_push($result,$subresult);
}
?>
我更喜欢
explode()
而不是preg\u match()
,因为你实际上并不需要正则表达式
<?php
$text="title=Title1|link=Link1\ntitle=Title2|link=Link2";
$result=array();
$count=0;
// line by line...
foreach (explode("\n", $text) as $line) {
// variable by variable...
foreach (explode("|", $line) as $vars) {
// separate LHS from RHS.
$parts=explode("=", $vars);
$result[$count][$parts[0]]=$parts[1];
}
$count++;
}
print_r($result);
?>
不要忘记添加代码来处理与预期模式不匹配的行。输入验证很重要。等等,为什么要使用两个标题变量?请进一步解释。一个标题变量中怎么可能有两个值?请粘贴一些实际的代码。Thanks@Hoseph@Vasanthan.R.P是实际的代码,数据来自textarea,由\R分隔,但我不知道它是如何生成和数组的。我将$text设置为我拥有的数据并打印输出。我同意,
preg\u match
可能是一个很好的选择。好的,你能使用我给出的示例吗,例如,$data=“title=Title1 | link=Link1\ntitle=Title2 | link=Link2”@Benn,输出数组位于$reg
中。请参阅print\r($reg)
(或者-如果需要捕获print\r的输出,请使用$str=print\r($reg,true)
)。很高兴在代码中看到注释。对于实际工作的代码,+1,并且还精确返回OP要求的输出。实际上更干净、更有序,谢谢!会来的。我只需将答案更改为您的答案,这就是我所说的干净编码,非常感谢!非常欢迎您。不过@Czechnology为您提供了一个一句妙语让你90%的成功!感谢所有在头脑风暴2小时后几秒钟内帮助我的人