【问题标题】:Issue splitting an array for use in another array拆分数组以在另一个数组中使用的问题
【发布时间】:2013-01-23 16:07:25
【问题描述】:

我有一些数据,我目前已经硬编码,基本上我正在尝试拆分数字,1-port 并将其重新创建为

'INSERT INTO '.$tbl_name.'(PortNumber) VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(145),(146),(147),(148),(149),(150),(151),(152),(153),(154),(155),(156)';

等等..我认为我有一个很好的开始..

PHP

//post vars 
$port = 24; //(int)$_POST['ports'];
$super = 2; //(int)$_POST['super'];
$col = 12; //(int)$_POST['columns'];
$row = 2; //(int)$_POST['rows'];
//rest of vars
$halfPort=$port/2;//12
$colHalf = $col / $super;//6
$half=$colHalf-1;//5
$count=1;
$and=1;
$one=1;

echo "<h1>here goes nothen</h1><br><br>";
//sperate port
$finalArray = array();
for ($i = $port; $i >= 1; $i -= $colHalf) {
    $tempArray = array();
    for ($j = 0; $j < $colHalf; $j++) {
        $tempArray[] = $i - $j;
    }
    $tempArray[]= sort($tempArray);
    $finalArray[] = implode(",", $tempArray);
}
$finalArray = array_reverse($finalArray);
echo "<pre>" . print_r($finalArray, true) . "</pre>";

echo "<br><br>";
//sql for insert
$sqlinsert='
        INSERT INTO '.$tbl_name2.'
        (PortNumber) VALUES ';
 $start='(';
 $end=')';
//preset b
$b=0;
for($c = $port; $c >= 1; $c -= $colHalf) {
    $queryStart = array();
$queryStart[]=explode(',',$finalArray[$b]);
   echo "<pre>" ."start". print_r($queryStart, true) . "</pre>";
    for($s=0; $s<6; $s+=$and) {
        $queryEnd = array();
        $queryEnd[] = $start.$queryStart[$s].$end;
                echo "<pre>" ."end". print_r($queryEnd, true) . "</pre>";
    }
$b+=1;
}

要实时查看,请在此处插入:http://phptester.net/index.php?lang=en baisaclly 它到达$queryEnd,一切都在走下坡路,有什么想法吗?

【问题讨论】:

  • 您可能想更清楚地说明您的问题,我不知道您在问什么。

标签: php mysql variables for-loop


【解决方案1】:

我不太确定你想做什么,但如果你只是想构建类似 INSERT 查询的东西,你可以这样做:

$tbl_name = '?';
echo 'INSERT INTO '.$tbl_name.'(PortNumber) VALUES ('.implode('),(', array_merge(range(1,12),range(145,156))).')';

【讨论】:

  • 我想我有点理解,如果我理解正确,这将起作用。但是 range() 函数究竟做了什么?这些数字究竟来自哪里?
  • 如果您不确定使用的函数,可以在 PHP 文档中查找上面的代码,但基本上有 range(1,12) 创建一个包含 1 到 12 元素的数组(对于145 到 156),array_merge 将这两个数组合并为一个,并 implode 创建该数组所有元素的字符串表示,并将它们与 ),( 像 1),(2),(3 等粘合在一起。
【解决方案2】:

我想我看到了。每次 For 循环运行时,您都在重新初始化 $queryEnd 数组。将其移出 For 循环。 迈克

【讨论】:

    猜你喜欢
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 2018-12-12
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多