php - 使用嵌套的 foreach 从多个数组构建一个新数组
问题描述
我对如何从这 3 个数组创建一个新数组然后将新数组中的值传递给函数以将值插入数据库感到困惑和困惑。
3个数组:
flavourname Array (
[0] => Red Sour Cherry Extract
[1] => Red Energy (Red Bull)
)
flavourcompanyname Array (
[0] => Amoretti
[1] => Bolsjehuset
)
flavourpercent Array (
[0] => 5
[1] => 2
)
预期结果:
Array (
[0] => Array (
[flavourname] => Red Sour Cherry Extract
[flavourpercent] => 5
[flavourcompany] => Amoretti
)
[1] => Array (
[flavourname] => Red Energy (Red Bull)
[flavourpercent] => 2
[flavourcompany] => Bolsjehuset
)
)
我试过的代码是最接近的:
foreach($flavourname as $key => $value) {
foreach($flavourpercent as $key2 => $value2) {
foreach($flavourcompanyname as $key3 => $value3) {
$newarray[] = array(
'flavourname' => $value,
'flavourpercent' => $value2,
'flavourcompany' => $value3
);
}
}
}
print_r($newarray);
来自 print_r() 的输出:
Array (
[0] => Array (
[flavourname] => Red Sour Cherry Extract
[flavourpercent] => 5
[flavourcompany] => Amoretti
)
[1] => Array (
[flavourname] => Red Sour Cherry Extract
[flavourpercent] => 5
[flavourcompany] => Bolsjehuset
)
[2] => Array (
[flavourname] => Red Sour Cherry Extract
[flavourpercent] => 2
[flavourcompany] => Amoretti
)
[3] => Array (
[flavourname] => Red Sour Cherry Extract
[flavourpercent] => 2
[flavourcompany] => Bolsjehuset
)
[4] => Array (
[flavourname] => Red Energy (Red Bull)
[flavourpercent] => 5
[flavourcompany] => Amoretti
)
[5] => Array (
[flavourname] => Red Energy (Red Bull)
[flavourpercent] => 5
[flavourcompany] => Bolsjehuset
)
[6] => Array (
[flavourname] => Red Energy (Red Bull)
[flavourpercent] => 2
[flavourcompany] => Amoretti
)
[7] => Array (
[flavourname] => Red Energy (Red Bull)
[flavourpercent] => 2
[flavourcompany] => Bolsjehuset
)
)
如您所见,上面的数组根本不是我想要的。
然后我想将新数组的值传递给这个函数以插入数据库:
foreach($newarray as $new) {
$this->addRecipeFlavours($lastID, trim($new['flavourname']), trim($new['flavourcompany']), $new['flavourpercent'], $usereid);
}
功能:
/**
ADD FLAVOURS
*/
public function addRecipeFlavours($recipeID, $recipeFlavourName, $recipeFlavourCompanyName, $recipePercent, $usereid) {
$query = 'INSERT INTO recipe_flavours (recipe_flavour_name, recipe_flavour_company_name, recipe_flavour_percent, recipe_flavour_recipe_id, recipe_flavour_ueid) VALUES (:recipeflavourname, :recipeflavourcompanyname, :recipeflavourpercent, :recipeflavourid, :usereid)';
$stmt = $this->queryIt($query);
$stmt = $this->bind(':recipeflavourname',$recipeFlavourName);
$stmt = $this->bind(':recipeflavourcompanyname',$recipeFlavourCompanyName);
$stmt = $this->bind(':recipeflavourpercent',$recipePercent);
$stmt = $this->bind(':recipeflavourid',$recipeID);
$stmt = $this->bind(':usereid',$usereid);
if($this->execute()) {
}
}
解决方案
您可以使用array_map
遍历数组。
$flavourname = //Your array
$flavourcompanyname = //Your array
$flavourpercent = //Your array
$result = array_map(function($a, $b, $c){
return array(
'flavourname' => $a,
'flavourcompany' => $b,
'flavourpercent' => $c,
);
}, $flavourname, $flavourcompanyname, $flavourpercent);
echo "<pre>";
print_r( $result );
echo "</pre>";
这将导致:
Array
(
[0] => Array
(
[flavourname] => Red Sour Cherry Extract
[flavourcompany] => Amoretti
[flavourpercent] => 5
)
[1] => Array
(
[flavourname] => Red Energy (Red Bull)
[flavourcompany] => Bolsjehuset
[flavourpercent] => 2
)
)
文档:array_map()
推荐阅读
- laravel - 结合 Laravel + Vue.js 我得到错误:“找不到模块:错误:无法解析'./vue/app'”
- javascript - 使用 Javascript 创建时无响应的 HTML 表格
- html - 修复了导航栏隐藏标题
- python - Python:对打印值进行排序
- r - 使用 RSelenium 抓取 PowerBI 图形数据
- python - Python中非线性方程组的数值解
- apache-kafka - 使用 kvstore.put(key, val) 将数据推送到状态存储时,Kafka Streams '中止发送,因为上一条记录捕获的错误' 错误
- c - 在c中使用互斥锁进行多线程并一次运行一个线程
- python - 基于两个唯一列值 pandas 创建集群的函数
- javascript - 使用对象和数组参数调用 Javascript 函数