如何在PHP中将数据从while循环拼接成多维数组?

时间:2013-02-09 01:15:33

标签: php multidimensional-array

我需要在多维数组中向EACH数组添加数据。这是我到目前为止的代码:

<?php 
//Arrays
$rsIdeas_array = array();

//Query Database
mysql_select_db($database_connFormula, $connFormula);
$query_rsIdeas = "SELECT * FROM ideas";
$rsIdeas = mysql_query($query_rsIdeas, $connFormula) or die(mysql_error());
$row_rsIdeas = mysql_fetch_assoc($rsIdeas);
$totalRows_rsIdeas = mysql_num_rows($rsIdeas);

//loop bizideas into array
do {
$calculated = ($row_rsIdeas['monthlysearches'] * 9);
array_push($rsIdeas_array, $row_rsIdeas);
array_splice($rsIdeas_array, 7, 0, $calculated);
} while ($row_rsIdeas = mysql_fetch_assoc($rsIdeas));

print_r($rsIdeas_array);

这是我得到的:

Array
(
[0] => Array
    (
        [ideaID] => 1
        [userID] => 1
        [bizidea] => Business Idea 1
        [bizexplained] => Business Idea 1 Explanation
        [bizmodel] => Utility
        [repkeyword] => Keyword 1
        [monthlysearches] => 33100
        [advcomp] => 0.95
        [startease] => 6
    )

[1] => 297900
[2] => Array
    (
        [ideaID] => 2
        [userID] => 1
        [bizidea] => Business Idea 2
        [bizexplained] => Business Idea 2 Explained
        [bizmodel] => Service
        [repkeyword] => Keyword 2
        [monthlysearches] => 6600
        [advcomp] => 0.93
        [startease] => 8
    )

[3] => 59400

)

但我需要的是,每个先前创建的数组都包含计算值,如下所示:

Array
(
[0] => Array
    (
        [ideaID] => 1
        [userID] => 1
        [bizidea] => Business Idea 1
        [bizexplained] => Business Idea 1 Explanation
        [bizmodel] => Utility
        [repkeyword] => Keyword 1
        [monthlysearches] => 33100
        [calculated] => 297900 //Here is where I need the calculated values
        [advcomp] => 0.95
        [startease] => 6
    )

[1] => Array
    (
        [ideaID] => 2
        [userID] => 1
        [bizidea] => Business Idea 2
        [bizexplained] => Business Idea 2 Explained
        [bizmodel] => Service
        [repkeyword] => Keyword 2
        [monthlysearches] => 6600
        [calculated] => 59400 //Here is where I need the calculated values
        [advcomp] => 0.93
        [startease] => 8
    )
)

我哪里错了?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

您无需进行任何拼接。

do {
  $row_rsIdeas['calculated'] = ($row_rsIdeas['monthlysearches'] * 9);
  array_push($rsIdeas_array, $row_rsIdeas);
} while ($row_rsIdeas = mysql_fetch_assoc($rsIdeas));

是的,就这么简单。

- 编辑 -

如果您必须按特定顺序排列列,则可以执行以下操作:

$row_rsIdeas['calculated'] = ($row_rsIdeas['monthlysearches'] * 9);
$row_rsIdeas = array(
  'ideaID' => $row_rsIdeas['ideaId'],
  'userID' => $row_rsIdeas['userId'],
  'bizidea' => $row_rsIdeas['bizidea'],
  // and so on
);
array_push($rsIdeas_array, $row_rsIdeas);

OR

$row_rsIdeas['calculated'] = ($row_rsIdeas['monthlysearches'] * 9);
uksort($row_rsIdeas, function($col1, $col2)) {
   $cols = array('ideaID' => 0, 'userID' => 1, 'bizidea' => 2, ...); //etc
   return ($cols[$col1] > $cols[$col2]);  // this might be backwards, trying reversing
}
array_push($rsIdeas_array, $row_rsIdeas);