我希望我的标题有意义,我不太确定如何以一种镜头的方式描述我的问题,所以这里是长版本:
我正在使用 PHP,我有 2 个 MySQL 表,它们显示项目及其规格(我无法更改表结构)。
T1(物品)
+---------+--------+
| itemID | item |
+---------+--------+
| 1 | TV |
| 2 | Radio |
| 3 | Camera |
| ... | ... |
+---------+--------+
T2(规格)
+---------+--------+------+
| itemID | specID | spec |
+---------+--------+------+
| 1 | color | red |
| 1 | weight | 10 |
| 1 | price | 499 |
| 2 | color | blue |
| ... | ... | ... |
+---------+--------+------+
我想要一个像这样的多维关联数组
array(
[0]=> array(
"itemID"=>"1",
"item"=>"TV",
"color"=>"red",
"weight"=>"10",
"price"=>"499")
[1]=> array(
"itemID"=>"2",
"item"=>"Radio",
"color"=>"blue",
...)
)
我似乎不可能只用一个查询来实现这一目标。我尝试分别查询这两个表,key=>value
在 T2 中重新排列并使用array_merge
.
到目前为止我所拥有的是来自 T1 的数组
array(
[0]=> array(
"itemID"=> "1",
"item"=>"TV")
[1]=> array(
"itemID"=> "2",
"item"=>"Radio")
[2]=> array(
"itemID"=> "3",
"item"=>"Camera")
...)
从 T2 开始,数组以相同的形式出现
array(
[0]=> array(
"itemID"=> "1",
"specID"=> "color",
"spec"=>"red")
[1]=> array(
"itemID"=> "1",
"specID"=> "weight",
"spec"=>"10")
[2]=> array(
"itemID"=> "1",
"specID"=> "price",
"spec"=>"499")
...)
更改数组后,我将得到一个数值数组,而不是我想要的两个关联数组
array(
[0]=> array(
[0] => ["itemID" => "1","color" => "red","weight" => "10", "price" => "499"])
[1]=> array(
[0] => ["itemID" => "2","color" => "blue",...])
...)
我的代码是
$newArray = array();
for ($i = 0; $i<=n; $i++) {
foreach($oldArray[$i] as $key => $value) {
if ($key === 'itemID') {
$a = $key . '" => "' . $value . '",';
}
elseif($key === 'specID') {
$b = '"' . $key . '" => "';
}
elseif($key === 'spec') {
$c = $value;
}
}
$newArray[] = [$a.$b.$c];
}
也许我在这里完全错了,所以任何帮助将不胜感激 - 谢谢!
如果项目参数的数量是可变的,则此表结构很好。
最简单的方法如下:
$array1 = array(...); // from table 1
$array2 = array(...); // from table 2
$result = array();
foreach ($array1 AS $v) {
$result[ $v['itemID'] ] = $v;
}
foreach ($array2 AS $v) {
$result[ $v['itemID'] ][ $v['specId'] ] = $v['spec'];
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句