PHP数组分解单个值
我有一个数组,其中包含从数据库收集的单个值 在一个while循环中,我希望每两个值分解一次 例如:PHP数组分解单个值,php,arrays,explode,Php,Arrays,Explode,我有一个数组,其中包含从数据库收集的单个值 在一个while循环中,我希望每两个值分解一次 例如: $data = array('20;40;60;80;100;150;200;300;500;1000'); $text = '20;40;60;80;100;150;200;300;500;1000'; preg_match_all("/([^;]+);([^;]+)/", $text, $pairs, PREG_SET_ORDER); foreach ($pairs as $pair)
$data = array('20;40;60;80;100;150;200;300;500;1000');
$text = '20;40;60;80;100;150;200;300;500;1000';
preg_match_all("/([^;]+);([^;]+)/", $text, $pairs, PREG_SET_ORDER);
foreach ($pairs as $pair) {
// ...
$lowvalue = $pair[1];
$highvalue = $pair[2];
// ...
}
我希望分解此值并以以下循环结束:
$lowprice = "20";
$highprice = "40";
我找不到任何这样的例子
非常感谢所有回答的人如果您只想将第一个和第二个值作为低/高值:
$data = array('20;40;60;80;100;150;200;300;500;1000');
list($lowprice,$highprice) = explode(';',current($data));
echo '$lowprice=',$lowprice,PHP_EOL;
echo '$highprice=',$highprice,PHP_EOL;
如果您想要一系列的低点和高点:
$data = array('20;40;60;80;100;150;200;300;500;1000');
$lowprices = $highprices = array();
$data = explode(';',current($data));
$dataCount = count($data);
var_dump($data);
for ($i=0; $i < $dataCount; $i += 2) {
$lowprices[] = $data[$i];
$highprices[] = $data[$i+1];
}
echo '$lowprices=';
var_dump($lowprices);
echo '$highprices=';
var_dump($highprices);
或
$data=array(20,40,60,801001502003005001000);
$lowprices=$highprices=array();
$dataCount=计数($data);
var_dump($数据);
对于($i=0;$i<$dataCount;$i+=2){
$lowprices[]=$data[$i];
$highprices[]=$data[$i+1];
}
回声“$lowprices=”;
var_dump(低价);
回音“$highprices=”;
var_dump(高价);
最初在上爆炸代码>。然后在递增2的for循环中,可以将当前值和下一个值指定给子数组:
$initarray = explode(";", "20;40;60;80;100;150;200;300;500;1000");
$num = count($initarray);
// Main array to hold subarrays
$outputarray = array();
for ($i=0; $i<$num; $i=$i+2) {
// Add the current pair ($i and $i+1) to a sub-array
$outputarray[] = array("lowprice"=>$initarray[$i], "highprice"=>$initarray[$i+1]);
}
你可以用
例如:
$data = array('20;40;60;80;100;150;200;300;500;1000');
$text = '20;40;60;80;100;150;200;300;500;1000';
preg_match_all("/([^;]+);([^;]+)/", $text, $pairs, PREG_SET_ORDER);
foreach ($pairs as $pair) {
// ...
$lowvalue = $pair[1];
$highvalue = $pair[2];
// ...
}
如果确实必须使用explode
和while循环,以下操作也可以:
$text = '20;40;60;80;100;150;200;300;500;1000';
$data = explode(';', $text);
$i = 0;
$count = count($data);
while ($i < $count) {
// ...
$lowvalue = $data[$i++];
$highvalue = $data[$i++];
// ...
}
$text='20;40;60;80;100;150;200;300;500;1000';
$data=分解(“;”,$text);
$i=0;
$count=计数($data);
而($i<$count){
// ...
$lowvalue=$data[$i++];
$highvalue=$data[$i++];
// ...
}
您可以像这样使用循环(使用and):
或者对
循环使用(应该比在每次迭代中调用count()
更有效):
$count=计数($data);
对于($i=0;$i<$count;$i+=2){}
您的意思是希望从循环中获得一系列低价和高价?或者只是数组中的前两个值,即低值和高值?您只想要前两个值。。?请解释清楚。count($data)
将为1。他正在用一个元素定义一个数组。只需从数据=
行中删除array()
。@Leigh-已修复,并提供了关于首先创建数组的适当注释
$text = '20;40;60;80;100;150;200;300;500;1000';
$data = explode(';', $text);
$i = 0;
$count = count($data);
while ($i < $count) {
// ...
$lowvalue = $data[$i++];
$highvalue = $data[$i++];
// ...
}
$data = explode( ';', '20;40;60;80;100;150;200;300;500;1000');
while( count( $data) > 1){
$lowprice = array_shift( $data);
$highprice = array_shift( $data);
}
$count = count( $data);
for( $i = 0; $i < $count; $i+=2){}