PHP and SQL - 2

使用数组

PHP 中数组分为 2 2 2

  1. 数字索引数组
  2. 非数字索引数组

数 字 索 引 数字索引 数组

<?php

  function myForEcho($myArr) {
    foreach($myArr as $value) {
      echo $value." ";
    }
    echo "<br/>";
  }

  $products = array( 'Tires', 'Oil', 'Spark Plugs' );
  $numbers = [1, 2, 3];

  // foreach (arr as value) { working }
  // foreach ($products as $current) {
  //   echo $current." ";
  // }
  // echo all products array
  myForEcho($products);

  // for (index = value; index < arr-length; index++)
  // { working }
  // for ($i = 0; $i < count($products); $i++) {
  //   echo $products[$i]." ";
  // }
  // echo all numbers array
  myForEcho($numbers);

  // use range
  $code_1 = range(1, 10);
  $code_2 = range(1, 5, 2);

  myForEcho($code_1);
  myForEcho($code_2);
?>

非 数 字 索 引 非数字索引 数组

<?php
  $products = [
    'Tires' => 100,
    'Oil' => 50,
    'Spark' => 10
  ];

  $numbers = [1, 2, 3];

  function myForEcho($myArr) {
    // 非数字索引数组
    // 但也兼容数字索引数组
    foreach ($myArr as $key => $value) {
      echo $key.' - '.$value."<br/>";
    }
    echo "<br/>";
  }

  myForEcho($products);
  myForEcho($numbers);
?>

k e y key key 为键名, v a l u e value value 为键值

E a c h Each Each L i s t List List 方法遍历数组

e a c h each each 方法使用

<?php
  $products = [
    "Code" => 1,
    "Name" => "鼠标"
  ];

  while ($element = each($products)) {
    echo $element['key'].' - '.$element['value'];
  }
?>

each 方法返回当前元素的属性数组,这包括键名与键值。

l i s t list list 方法使用

<?php
  $produces = [
    'id' => 1,
    'name' => 'kQ',
    'age' => 19
  ];

  while (list($k, $v) = each($produces)) {
    echo $k.' - '.$v;
    echo '<br/>';
  }
?>

多维数组

到目前为止,只是在使用 单 维 单维 数组,但在实际开发中, 多 维 多维 数组用的比较广泛,特别是 二 维 二维 数组或 三 维 三维 数组。

数 字 索 引 数字索引 二维数组

<?php
  // or array to create
  $products = [
    ['Thing', 'Price'],
    ['Oil', 'Tire', 'Spark']
  ];

  // use for
  for ($i = 0; $i < count($products); $i++) {
    for ($j = 0; $j < count($products[$i]); $j++) {
      echo $products[$i][$j]." ";
    }
    echo "<br/>";
  }
?>

非 数 字 索 引 非数字索引 二维数组

<?php
  // or array to create
  $products = [
    [
     'Code' => 'TIR',
     'Description' => 'Tires',
     'Price' => 10
    ],
    [
      'Code' => 'OIL',
      'Description' => 'Oil',
      'Price' => 4
    ],
    [
      'Code' => 'SPARK',
      'Description' => 'Sparks',
      'Price' => 6
    ],
  ];

  // use for
  for ($i = 0; $i < count($products); $i++) {
    echo $products[$i]['Code'].' | '
        .$products[$i]['Description'].' | '
        .$products[$i]['Price'].'<br/>';
  }
?>

常用排序函数

  • s o r t sort sort 一维数组升序排序
  • a s o r t asort asort 一维数组键值升序排序
  • k s o r t ksort ksort 一维数组键名升序排序

S o r t Sort Sort 函数排序数组

<?php
  $products = array('Code', 'Name', 'Key');
  // Code Key Name
  // sort 默认为升序
  sort($products);

  foreach($products as $current) {
    echo $current." ";
  }
?>

A s o r t Asort Asort 函数排序数组

<?php
  $prices = array("Oil"=>4,"Tire"=>100,"Spark"=>6);

  asort($prices);

  foreach ($prices as $current => $b) {
    echo $current.'-'.$b."<br/>";
  }
?>

a s o r t asort asort 方法能使键名和键值在排序时保持一致, a s o r t asort asort 是对键值排序

K s o r t Ksort Ksort 函数排序数组

<?php
  $prices = array("Oil"=>4,"Tire"=>100,"Spark"=>6);

  ksort($prices);

  foreach ($prices as $current => $b) {
    echo $current.'-'.$b."<br/>";
  }
?>

k s o r t ksort ksort 方法能使键名和键值在排序时保持一致, k s o r t ksort ksort 是对键名排序

反序排序函数

  • s o r t sort sort 一维数组降序排序
  • a s o r t asort asort 一维数组键值降序排序
  • k s o r t ksort ksort 一维数组键名降序排序

多维数组排序

  • array_multisort
<?php
  $products = [
    ['TIR', 'Tires', 100],
    ['OIL', 'Oil', 4],
    ['SPK', 'Spark', 6]
  ];

  array_multisort($products);

  for ($i = 0; $i < count($products); $i++) {
    for ($j = 0; $j < 3; $j++) {
      echo $products[$i][$j];
    }
    echo '<br/>';
  }
?>

排序顺序:SORT_ASC or SORT_DESC 升序或降序

s h u f f l e shuffle shuffle 函数

shuffe 函数能够打乱数组,例如打开网页时,显示不同的图片,而不是每次都是一样的结果,这时就需要使用 shuffe 函数

<?php
  $arr = [1, 2, 8, 4, 2, 1];
  shuffle($arr);

  function setPage($myArr) {
    for ($i = 0; $i < 3; $i++) {
      echo $myArr[$i]." ";
    }
  }
  
  setPage($arr);
?>

e x p l o d e explode explode 函数

explode 函数将数组从 t 的位置切割数组。

array explode(string separator, string string[, int limit])

比如 Name\tAge\tID\n 这串字符

$arr = explode('\t', $arr);

执行以上代码后,$arr = [‘Name’,‘Age’,‘ID\n’];

数组高级方法

  • each
  • current
  • reset
  • end
  • next
  • pos
  • prev

e a c h each each 方法会返回当前元素,并把指针指向下一个位置
n e x t next next 方法把指针指向下一个位置,并返回当前元素

r e s e t reset reset 方法返回数组的第一个元素
e n d end end 方法返回数组的最后一个元素

逆序输出数组元素

<?php
  $arr = [1, 2, 8, 4, 2, 1];
  
  $value = end($arr);
  while ($value) {
    echo $value." ";
    $value = prev($arr);
  }
?>

对数组每一个元素应用函数

  • array_walk
bool array_walk(array $arr, callable func[, userdata])

回 调 回调 函数必须具有 2 2 2 个参数

  • 数组 键 值 键值
  • 数组 键 名 键名
<?php
  $arr = [1, 2, 8, 4, 2, 1];
  
  function my_add(&$value, $key, $factor) {
    $value *= $factor;
  }

  array_walk($arr, 'my_add', 2);

  foreach ($arr as $c) {
    echo $c." ";
  }
?>

统计数组元素个数

  • count
  • sizeof (count 的 别 名 别名
  • array_ c o u n t count count_ v a l u e s values values
<?php
  $arr = [1, 2, 8, 4, 2, 1];
  
  // sizeof is count 的别名
  $ac = array_count_values($arr);

  foreach ($ac as $c => $b) {
    echo $c.' - '.$b."<br/>";
  }
?>

E x t r a c t Extract Extract 函数

e x t r a c t extract extract 将数组转换成标量变量

<?php
  $arr = ['code1'=>1, 'code2'=>2, 'code3'=>3];
  
  // extract 必须是非数字索引的数组
  extract($arr);

  echo "$code1 $code2 $code3";

  foreach ($arr as $c => $b) {
    echo $c.' - '.$b."<br/>";
  }
?>

链接: 更多关于 PHP 数组的方法

南无阿弥陀佛,善哉善哉

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值