[英]how to traverse array of array(inner array) through for each
i have the following array 我有以下数组
$competency = array(
array(
"assessment_id" => 2,
"activity_id" => 1,
"grade" => 10,
"competency_grade" => array(
array(
"competency_id" => 1,
"grade" => 10
) ,
array(
"competency_id" => 1,
"grade" => 10
)
)
) ,
array(
"assessment_id" => 2,
"activity_id" => 1,
"grade" => 10,
"competency_grade" => array(
array(
"competency_id" => 1,
"grade" => 10
) ,
array(
"competency_id" => 1,
"grade" => 10
)
)
)
);
i print this as 我将此打印为
echo "<pre>";
print_r($competency);
this line give result as 这行给出结果为
Array
(
[0] => Array
(
[assessment_id] => 2
[activity_id] => 1
[grade] => 10
[competency_grade] => Array
(
[0] => Array
(
[competency_id] => 1
[grade] => 10
)
[1] => Array
(
[competency_id] => 1
[grade] => 10
)
)
)
[1] => Array
(
[assessment_id] => 2
[activity_id] => 1
[grade] => 10
[competency_grade] => Array
(
[0] => Array
(
[competency_id] => 1
[grade] => 10
)
[1] => Array
(
[competency_id] => 1
[grade] => 10
)
)
)
)
Now i try to insert data in two table in first table i use the key assessment_id,activity_id,grade based on that it return inserted id,and use this inserted id in second table as the below code here 现在,我尝试在第一个表的两个表中插入数据,我根据返回的插入ID使用键Assessment_id,activity_id,grade,并在第二个表中使用此插入的ID作为下面的代码
foreach ($competency as $key => $value) {
foreach ($value as $innerkey=>$innervalue)
{
//echo "<pre>"; print_r($innerkey[0]);
$query = "insert into grading set user_id = '".$user_id."',
assessment_id = '".$innervalue['assessment_id']."',
activity_id = '".$innervalue['activity_id']."',
date = now(),
grade = '".$innervalue['grade']."'";
$result = mysql_query($query);
$grading_id= mysql_insert_id();
if($innerkey=="competency_grade"){
//foreach ($innervalue as )
foreach ($innervalue as $mostinnerkey =>$mostinnervalue)
{
$query1 = "insert into competency_grade set
competency_id = '".$mostinnervalue['competency_id']."',
grade = '".$mostinnervalue['grade']."' ,
grading_id = $grading_id ";
$result1 = mysql_query($query1);
echo mysql_error();
//print_r($mostinnervalue['competency_id']); echo "<br>";
//print_r($mostinnervalue['grade']);echo "<br>";
}
}
}
}
but i am unable to find the solution plz help me 但我找不到解决方案,请帮我
Regards 问候
****your error might fixed use following script****
foreach ($competency as $key => $value) {
$query = "insert into grading set user_id = '".$user_id."',
assessment_id = '".$value['assessment_id']."',
activity_id = '".$value['activity_id']."',
date = now(),
grade = '".$value['grade']."'";
$result = mysql_query($query);
$grading_id= mysql_insert_id();
foreach ($value as $innerkey => $innervalue)
{
if($innerkey=="competency_grade"){
foreach ($innervalue as $mostinnerkey =>$mostinnervalue)
{
$query1 = "insert into competency_grade set competency_id = '".$mostinnervalue['competency_id']."',
grade = '".$mostinnervalue['grade']."' ,
grading_id = $grading_id ";
$result1 = mysql_query($query1);
echo mysql_error();
}
}
}
You dont need second loop remove it and replace 您不需要第二个循环将其删除并替换
$innervalue['assessment_id']
with: 与:
$value['assessment_id']
Your complete code may look like: 您的完整代码可能如下所示:
foreach ($competency as $key => $value) {
$query = "insert into grading set user_id = '".$user_id."',
assessment_id = '".$value['assessment_id']."',
activity_id = '".$value['activity_id']."',
date = now(),
grade = '".$value['grade']."'";
$result = mysql_query($query);
$grading_id= mysql_insert_id();
$query1 = "insert into competency_grade set
competency_id = '".$value['competency_grade']['competency_id']."',
grade = '".$value['competency_grade']['grade']."' ,
grading_id = $grading_id ";
$result1 = mysql_query($query1);
echo mysql_error();
}
You can do like 你可以喜欢
function traversearray($array)
{
foreach($array as $key=>$value)
{
if(is_array($value))
{
traversearray($value);
}
else
{
echo "key = $key value = $value<br/>";
}
}
}
traversearray($competency);
You can use recursive function or array_walk_recursive or iterators Try below code for manual traverse 您可以使用递归函数或array_walk_recursive或迭代器尝试以下代码进行手动遍历
<?php
function array_traverse($competency){
foreach($competency as $key => $val){
if(is_array($val)){
array_traverse($val);
} else{
echo $val;
}
}
}
?>
fun($competency);
function fun($value)
{
foreach ($value as $val)
{
if( is_array($val))
fun($val);
echo $val;
}
}
Try this.....! 尝试这个.....!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.