我无法正确迭代多维数组我试图检索每个井的值。值。
我的问题是我似乎在一个数组中有一个数组,它有一个数组用于每个键/对值,我不确定如何遍历这些数据并将值添加到每个数组的数据库中。
例如,如果我的页面上有一个表单,则数组返回低于,并且下面是两个表单返回的表单等
Array
(
[0] => Array
(
[0] => Array
(
[name] => sl_propid
[value] => 21
)
[1] => Array
(
[name] => sl_date
[value] => 04/01/2014
)
[2] => Array
(
[name] => sl_ref
[value] => Form1
)
[3] => Array
(
[name] => sl_nom_id
[value] => 12
)
[4] => Array
(
[name] => sl_desc
[value] => Form1
)
[5] => Array
(
[name] => sl_vat
[value] => 60
)
[6] => Array
(
[name] => sl_net
[value] => 999
)
)
)
我的问题是如何迭代返回的数组,无论它的大小和拉回每个值?
我尝试过嵌套foreach循环,这确实给了我结果,但只有一个键/值对让我相信我做错了循环,我可以检索值,如果我静态访问它们,这当然没有用。
foreach ($result as $array) {
print_r($array);
}
上面的foreach返回上面的数组,添加另一个foreach删除out" container"数组,但添加另一个foreach循环,只返回一个键/值对,这种排序是有道理的,因为第一个索引也是一个数组,希望我没有像其他人一样困惑其他人D:。
感谢您的阅读 任何帮助表示赞赏。
编辑使用下面的数组walk recursive我得到输出
$result = $this->input->post();
function test_print($item, $key)
{
echo "$key holds $item\n";
//$this->SalesLedgerModel->addInvoiceToLedger($key, $key, $key, $key, $key, $key, $key);
}
array_walk_recursive($result, 'test_print');
}
这几乎是我想要的,但我如何获取每个单独的值并将其添加到我的ModelFunction(实际将数据输入到DB)
该函数需要7个参数,但我不确定如何确保正确的信息转到正确的参数
$this->SalesLedgerModel->addInvoiceToLedger($propid, $date, $ref, $nomid, $desc, $vat, $net);
我的控制器功能
function addInvoiceToLedger(){
$this->load->model('SalesLedgerModel');
// $propid = $this->input->post('propid');
// $date = $this->input->post('date');
// $ref = $this->input->post('ref');
// $nomid = $this->input->post('id');
// $desc = $this->input->post('desc');
// $vat = $this->input->post('vat');
// $net = $this->input->post('sl_net');
$results = $this->input->post();
//var_dump($results);
$size1 = sizeof($results)-1;
for($i=0; $i<=$size1; $i++)
{
$size2 = sizeof($results[$i])-1;
for($j=0; $j<=$size2; $j++)
{
$name = $results[$i][$j]['name'];
$value = $results[$i][$j]['value'];
echo $value . "\n" ;
$this->SalesLedgerModel->addInvoiceToLedger($value, $value, $value, $value, $value, $value, $value);
}
}
我的模特功能
function addInvoiceToLedger($propid, $date, $ref, $nomid, $desc, $vat, $net){
$data = array('sl_prop_id' => $propid, 'sl_date' => $date,
'sl_ref' => $ref, 'sl_nominal_sub' => $nomid, 'sl_invoice_desc' => $desc, 'sl_vat' => $vat, 'sl_amount' => $net);
$this->db->insert('salesledger', $data);
}
答案 0 :(得分:1)
你可以编写一些递归代码来逐步遍历数组,如果一个元素变成一个数组,你可以再次调用它自己,或者编写一个非常简单的函数并通过array walk recursive调用它,这样你就可以做任何事了喜欢价值:
<?php
$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');
function test_print($item, $key)
{
echo "$key holds $item\n";
}
array_walk_recursive($fruits, 'test_print');
?>
输出:
a holds apple
b holds banana
sour holds lemon
答案 1 :(得分:0)
foreach ($result as $array) {
foreach($array as $arr){
foreach($arr as $a){
echo $a[value];
}
}
}
答案 2 :(得分:0)
试试这个。它会快得多。由于3 foreach loops
比2 for loops
便宜得多(for loops
比foreach loops
更快) -
$size1 = sizeof($results)-1;
if($size1 > 0)
{
for($i=0; $i<=$size1; $i++)
{
$size2 = sizeof($results[$i])-1;
if($size2 > 0)
{
for($j=0; $j<=$size2; $j++)
{
$name = $results[$i][$j]['name'];
$value = $results[$i][$j]['value'];
$insert = $this->your_model->insert($name, $value);
}
}
}
}