我有一个数组中的用户输入。
样品申请:
{
"request": {
"phone_number": [ "0321553678", "0321444" ],
"amount": [ "10", "20" ]
}
}
我需要将其保存在数据库中。数组中的第一个phone_number
(0321553678)与数量数组中的第一个amount
(10)一起使用,依此类推。
我尝试过如下循环,但我不确定如何循环使用这两个输入。它没有这种方式。
$data = request(['amount', 'phone_number');
foreach($data as $input)
{
Transaction::create([
'amount' => $input->amount,
'phone_number' => $input->phone_number,
]);
amount
和phone_number
都是数组,其索引对应。
任何?
答案 0 :(得分:1)
在简单的PHP中,您必须使用" key" foreach循环的一部分
foreach($array as $key => $value) {}
您将在$key
变量的数组中获取当前$value
的索引。
$array = ['a','b','c'];
$array2 = [10, 20, 30];
foreach($array as $index => $char) {
echo $char + " => " + $array2[$index] // => "a => 10"
}
答案 1 :(得分:0)
由于你在这里提供了json数据,我会做这样的事情。
array_combine
可能有更有效的方法,或者使用更少的代码行,但我最初的本能是将两个数组放入变量,并使每个数组成为相应的键/值数组(使用Transaction
)因为它的可读性和可理解性。
希望有所帮助。
编辑:我不确定create
类是什么,但由于它的静态from bitcoin import *
Alice_private = 1
Alice_public = privtopub(Alice_private)
Bob_private = 2
Bob_public = privtopub(Bob_private)
#they exchange publics
Alice_message=ecdsa_raw_sign(sha256('Hello'), Alice_private)
Bob_message = ecdsa_raw_sign(sha256('Hello back'), Bob_private)
方法似乎采用了数组,因此很可能是你可以通过整个数据集'它。我提出这个问题的原因是,如果它,如名称所示,创建一个事务,你可能想要保存"全部或者没有",并且如果任何值不正确则让事务回滚/失败某种内部验证,等等。要考虑的事情。
答案 2 :(得分:0)
如果您不需要按照每个字段索引数据库中的信息
$db->bind('data',serialize($data));
$db->query('insert into ...');
否则,您可以遍历数组并按正确顺序放置。
// parse
$requests = array();
foreach($data as $value_1) {
foreach($value as $value_2) {
$requests[] = ...
)
}
}
然后插入请求。
您还可以考虑以不同方式构建数据:
{
"request":
[
{"phone_number":"0321553678","amount":"10"},
{"phone_number":"0321444","amount":"20"}
]
}
抱歉,被突然中断......我希望有所帮助。
答案 3 :(得分:-1)
如果$data
的结构保持不变,因为它始终采用request(['amount', 'phone_number')
形式,您可以将其拆分为2个不同的数组,如此
$amount = $data[1];
$phone = $data[0];
foreach ($phone as $inputPhone){
foreach($amount as $inputAmount) {
Transaction::create([
'amount' => $inputAmount,
'phone_number' => $inputPhone,
]);
}
}
我希望这有帮助!