zoukankan      html  css  js  c++  java
  • php foreach详解

    php 4 引入foreach,用于遍历数组的键值对.两种语法结构:

    第一种: 获取一个数组的值()

       foreach( $variable  as  $value ){

           #code;

         }

    例:

    1  <?php
    2      $arr = array( 1, 2, 3, 4 );
    3      foreach ( $arr as $val ) {
    4          echo $val ;
    5      }
    6  ?>

    // 输出: 1  2  3  4

    第二种: 获取一个数组的键值对,重组成一个新数组


        foreach ($variable as $key => $value) {
            # code...
        }

         $arr = array( 1, 2, 3, 4, 5 );
         $arr1 = array();
         foreach ( $arr as $key => $value ) {
             $arr1 = array(
                 $key =>$value  
                 );
             print_r($arr1);
         }

    php 5 foreach可以用来遍历对象

    下面说下利用遍历数组 ,重组数组结构

    不同键的数组求差集:

    数组1构造  one

    Array
    (
        [0] => Array
            (
                [Platform] => htc
                [OrderID] => ZF-1ef459cd00cd47ad81982daca3a141ca
                [game_order_id] => 2001-0744382800107
                [Account] => 200101103
                [GameCoin] => 60
                [RoleName] => 未传递
                [ChargeTime] => 2015-07-21 09:57:34
            )
    
        [1] => Array
            (
                [Platform] => htc
                [OrderID] => ZF-21abd01c3a64492c928df1972b06e8cc
                [game_order_id] => 2001-0744387100207
                [Account] => 200101103
                [GameCoin] => 60
                [RoleName] => 未传递
                [ChargeTime] => 2015-07-21 09:58:11
            )
    
        [2] => Array
            (
                [Platform] => htc
                [OrderID] => ZF-01e95ae0c01940928765198f80342dbc
                [game_order_id] => 2001-0744723000207
                [Account] => 200101109
                [GameCoin] => 60
                [RoleName] => 未传递
                [ChargeTime] => 2015-07-21 10:54:13
            )
    
    .....
    数组2 构造  two
    Array
    (
        [0] => Array
            (
                [ID] => 2001-0744382800107
            )
    
        [1] => Array
            (
                [ID] => 2001-0763066100107
            )
    
    )
    数组3构造 three
    
    
    Array
    (
        [0] => Array
            (
                [GameOrderId] => 2001-0744811600107
            )
    
        [1] => Array
            (
                [GameOrderId] => 2001-0744387100207
            )
    
        [2] => Array
            (
                [GameOrderId] => 2001-0744723000207
            )
    
        [3] => Array
            (
                [GameOrderId] => 2001-0744834400107
            )
    
    )
    求数组1和2 的差集
    foreach ($one $ num => $o) {
                $exist = false;
                foreach ($two as $key => $t) {
                     if($o['game_order_id'] == $t['ID'] ){
                         $exist = true;
                         break;
                     }
                }
                if ($exist == false) {
                    $listA[] = $pre;
                }
    }
    $list 就是要求的数组1和2的差集数组 
    
    测试另外一种写法
    foreach($one as $num => $o){
                foreach ($two as $key => $t) {
                   if($o['game_order_id'] == $t[ID]){
                    unset($o);
                   }
                }
                $c[] = $o;
             }
    printf_r(array_values(array_filter($c)));
    结果是可行的,就是不知道有没有bug,之前还用了一个数组函数,array_diff_assoc($arr1,$arr2),结果结果比较类似,错以为一样,经测试array_diff_assoc 先比较键值,去掉不同键值得键值对,
    手册里是这么介绍的,比较键名和键值,并返回两个数组的差集数组。欢迎补充
  • 相关阅读:
    Windows程序设计 读书笔记 对话框。
    Windows程序设计 读书笔记 菜单及其他资源。
    WM_PAINT 和 UpdateWindow
    设备描述表。
    裁解区域
    Windows程序设计 读书笔记 键盘。
    Windows程序设计 读书笔记 鼠标。
    CreateDC,CreateIC,CreateCompatibleDC,CreateMetaFile.
    API原理介绍。
    CString 和 const char* 的相互转化(UNICODE)。
  • 原文地址:https://www.cnblogs.com/danche/p/4633692.html
Copyright © 2011-2022 走看看