PHP之foreach学习(1)

今天学习了一些关于foreach实战的例子,给我提供了一些思路。

1.先是一些基本操作

顺序输出

$a=array("a","b","c");
foreach($a as $value){
    
    
	echo $value." ";
}
//a b c

一维关联数组输出

$b=array(
	"a"=>"me",
	"b"=>"you",
	"c"=>"he"
);
foreach($b as $key => $value){
    
    
	echo $key." ".$value."\";
}
//a me\b you\c he

二维关联数组输出

$c=array(
	array("1","Jack"),
	array("2","Fly"),
	array("3","Horus")
)
foreach($c as $key => $value){
    
    
	echo $key."<br>";
	print_r($value);//不能用echo
}
//0
//Array
//(
//    [0] => 1
//    [1] => Tom
//)
//1
//Array
//(
//    [0] => 2
//    [1] => Jack
//)
//2
//Array
//(
//    [0] => 3
//    [1] => Marry
//)

2.然后是一些项目案例

①将已转化为PHP二维数组的表单里的name列提取出来做成一个新的数组

//表单
$d=array(
    array("id"=>"01017","name"=>"Horus"),
    array("id"=>"01002","name"=>"Jack"),
    array("id"=>"01015","name"=>"Jim"),
    array("id"=>"01005","name"=>"Fly"),
);

我想,既然要做成一个新的数组,那就先给它建个空数组来存放

$new_arr=array();

然后,我们要通过foreach来每次查遍历并提取name的值来赋值进入新数组

foreach($d as $value){
    
    
	$new_arr[]=$value["name"];//$value作为迭代器将迭代整个子array数组,那就把其中的name项提取出来赋值给新数组
}
print_r($new_arr);
//Array
//(
//    [0] => Horus
//    [1] => Jack
//    [2] => Jim
//    [3] => Fly
//)

②二维表单整理成嵌套数组

表单

$original_array = array(
    array('id' => 1,'pid' => 0,'name' => '最新公告'),
    array('id' => 2,'pid' => 0,'name' => '新闻分类'),
    array('id' => 3,'pid' => 1,'name' => '国内新闻'),
    array('id' => 4,'pid' => 1,'name' => '国际新闻'),
    array('id' => 5,'pid' => 0,'name' => '图片分类'),
    array('id' => 6,'pid' => 5,'name' => '新闻图片'),
    array('id' => 7,'pid' => 5,'name' => '其它图片')
);
//pid!=0表示为上一个pid=0的元素的子类
//结果如下
/*
最新公告
新闻分类
	国内新闻
	国际新闻
图片分类
	新闻图片
	其它图片	
*/

这里要用到无穷极树算法,算法原理不清楚,用就完事

function Infinite_tree_algorithm($arr, $pid = 0, $column_name = 'id|pid|children') {
    
    
    list($idname, $pidname, $cldname) = explode('|', $column_name);
    $ret = array();
    foreach ($arr as $k => $v) {
    
    
        if ($v [$pidname] == $pid) {
    
    
            $tmp = $arr [$k];
            unset($arr [$k]);
            $tmp [$cldname] = Infinite_tree_algorithm($arr, $v [$idname], $column_name);
            $ret [] = $tmp;
        }
    }
    return $ret;
}
//修改函数:对具体列数进行调整
$output_array =Infinite_tree_algorithm($arr1, 0, 'id|pid|children');
print_r($output_array)
//输出结果例子
//Array
//(
//    [0] => Array
//    (
//        [id] => 1
//      [pid] => 0
//      [name] => 新闻分类
//[children] => Array
//(
//    [0] => Array
//    (
//        [id] => 3
//              [pid] => 1
//              [name] => 国内新闻
//[children] => Array
//(
//)
//
//            )
//
//          [1] => Array
//(
//    [id] => 4
//              [pid] => 1
//              [name] => 国际新闻
//[children] => Array
//(
//)
//
//            )
//
//        )
//
//    )
//
//  [1] => Array
//(
//    [id] => 2
//      [pid] => 0
//      [name] => 最新公告
//[children] => Array
//(
//)
//
//    )
//
//  [2] => Array
//(
//    [id] => 5
//      [pid] => 0
//      [name] => 图片分类
//[children] => Array
//(
//    [0] => Array
//    (
//        [id] => 6
//              [pid] => 5
//              [name] => 新闻图片
//[children] => Array
//(
//)
//
//            )
//
//          [1] => Array
//(
//    [id] => 7
//              [pid] => 5
//              [name] => 其它图片
//[children] => Array
//(
//)
//
//            )
//
//        )
//
//    )
//
//)

感谢:https://www.jb51.net/article/95645.htm.

猜你喜欢

转载自blog.csdn.net/qq_52480906/article/details/120855177