我正在使用下面的代码来拆分字符串。我必须为每个输入$ProductsURL[x]
和输出重复代码$productx[]
<?php
$url = "$ProductsURL[0]";
$urls = split("http://", $url);
$product0 = array();
foreach($urls as $val){
if(!$val) continue;
$product0[] = "http://$val";
}
?>
<?php
$url = "$ProductsURL[1]";
$urls = split("http://", $url);
$product1 = array();
foreach($urls as $val){
if(!$val) continue;
$product1[] = "http://$val";
}
?>
..................
有没有办法避免为所需的每个输入/输出重复代码。我需要代码~100次
使用简单循环。并使用数组变量作为哈希来存储数据。
另外,我认为您在以下行中有错误:$url = "$ProductsURL[$i];"
.
最后它应该是这样的:
$product = array();
for ($i = 0; $i < 100; $i++) {
$url = $ProductsURL[$i];
$urls = split("http://", $url);
$product[$i] = array();
foreach($urls as $val){
if(!$val) continue;
$product[$i][] = "http://$val";
}
}
不需要函数。
您所需要的只是一个旧的普通foreach
环。
也许还有一些知识如何使用variable variables
(http://php.net/manual/en/language.variables.variable.php)
<?php
foreach($ProductsURL as $key=>$url)
{
$urls = split("http://", $url);
${'product'.$key} = array();
foreach($urls as $val) if($val) ${'product'.$key} [] = "http://$val";
}
?>
然后,要检查结果,请执行以下操作:
print_r($product0);
print_r($product1);
print_r($product2);
....
$product = array();
for ($i = 0; ; $i++) {
if ($i > 1) {
break;
}
$url = "$ProductsURL[$i]";
$urls = split("http://", $url);
foreach($urls as $val){
if(!$val) continue;
$product[$i][] = "http://$val";
}
}
您可以使用变量作为变量名称,使用 $$
<?php
foreach ($productURL as $key => $value) {
$newName = 'product' . $key;
$$newName[] = $value;
}
?>
取而代之的是,我会选择将所有产品存储在数组中,而不是单独的变量中。您需要的代码应该是这样的:
<?php
$products = array();
foreach ($ProductsURL as $productUrl) {
$product = array();
$urls = split("http://", $url);
foreach($urls as $val){
if(!$val) continue;
$product[] = "http://$val";
}
$products[] = $product;
}
?>