我一直试图找到这个问题的答案,但我无法...... 所以我不得不问一个问题......
为了简短起见,我不会发布我所拥有的任何代码,而是直接提出问题。
我的数组看起来像这样:
Array
(
[0] => Array
(
[0] => ID09666
[1] => ID14366
[2] => ID8174
[3] => ID4106
)
[1] => Array
(
[0] => /title_is_fantastic/
[1] => /what_an_awesome_title/
[2] => /great_title/
[3] => /awesome_title/
)
[2] => Array
(
[0] => Title is fantastic
[1] => What an awesome title
[2] => Great title
[3] => Awesome title
)
[4] => Array
(
[0] => 100%
[1] => 86%
[2] => 76%
[3] => 68%
)
)
我需要添加到DB的值是:
ID = ID09666
url = /title_is_fantastic/
title = Title is fantastic
percent = 100%
那么如何将这些值最快地添加到数据库中呢? 我对这个数组非常困惑,所以任何帮助都表示赞赏。
谢谢!
答案 0 :(得分:0)
假设你的数组是$array
:
$length = count($array[0]);
$rows = array();
for($i = 0; $i < $length; $i++)
$rows[] = "(".array($array[0][$i].", ".$array[1][$i].", ".$array[2][$i].", ".$array[3][$i].")";
// Ugly language with no executemany function... So we build a INSERT INTO with many values by ourselves
$sql = "INSERT INTO table (id, url, title, percent) VALUES " . implode(',', $rows);
$stmt = $pdo->prepare ($sql);
try {
$stmt->execute($insert_values);
} catch (PDOException $e){
echo $e->getMessage();
}
$pdo->commit();
答案 1 :(得分:0)
嗯,我想我理解你的观点。问题是你的原始阵列有点相当奖励。如果我是你,我会创建一个函数来首先重新排列数组:
Array
(
[0] => Array
(
[id] => ID09666
[url] => /title_is_fantastic/
[title] => Title is fantastic
[percent] => 100%
)
...
)
然后直接访问第一个(或任何)元素。 功能类似于:
function rearrange($arr){
$array_number = count($arr[0]);
$new_arr = array();
for ($i=0,$i<$array_number<$i++){
$new_arr[$i]['id']=$arr[0][$i];
$new_arr[$i]['url']=$arr[1][$i];
$new_arr[$i]['title']=$arr[2][$i];
$new_arr[$i]['percent']=$arr[3][$i];
}
return $new_arr;
}