Php函数可以避免重复代码

时间:2015-01-20 22:43:42

标签: php

我使用以下代码拆分字符串。我必须为每个输入重复代码$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次

5 个答案:

答案 0 :(得分:1)

使用简单的循环。并使用数组变量作为哈希来存储数据。

此外,我认为您在以下行中有错误:$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";
  }
}

答案 1 :(得分:1)

无需功能。
您所需要的只是一个旧的foreach循环 也许有些知识如何与variable variableshttp://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);
....

答案 2 :(得分:0)

$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";
    }
    }

答案 3 :(得分:0)

您可以使用$$

将变量用作变量名
<?php

foreach ($productURL as $key => $value) {
$newName = 'product' . $key;
$$newName[] = $value;
}
?>

答案 4 :(得分:0)

而不是那样,我会选择将所有产品存储在数组中而不是单独的变量中。您需要的代码应该是:

<?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;
}
?>