在 PHP 里要使用数组时,只要将变量进行「初始化」数组时的程序即可。 范例: $names[0] = "Jollen" $names[1] = "Jordan" $names[2] = "Kitty" $names["howmany"] = 3; scalar array 与 associative array 在上面的例子中,我们看到: $names[3] = "Kitty" 是以 3 这个数值做索引,以数值做索引 (index, key) 的数组称为 scalar array。 另外一个例子: $names["howmany"] = 3; 以字符串做索引的数组我们称为 associative array。 多维数组 多维数组的初始化与一维数组方法相同,例如: $alpha[0][0] = "A"; $alpha[0][1] = "B"; $alpha[1][0] = "C"; $alpha[1][1] = "D"; 这种写法等于: $alpha[0][] = "A"; $alpha[0][] = "B"; $alpha[1][] = "C"; $alpha[1][] = "D"; 数组的内部指针 PHP 里的数组事实上是利用资料结构中的双向键接串列來维护的,因此我们可以利用 next() 与 pre()函数数组列的內部指标往前或往后一个元素。数组里的指标除了利用 PHP 提供的函数外,外界无法直接去改变数组的內部指标。 PHP 数组函数 - array()、count()、current()、list()、next()、pre()、reset()、key()、array() 用途: 建立一个数组,依给定的参数 (语法) 传回数组。 范例: $name = array("Jollen", "Paul", "Ketty"); 相当于: $name[0] = "Jollen"; $name[1] = "Paul"; $name[2] = "Ketty"; array() 亦可为用在巢状式数组: $fruits = array( "fruits" => array("a"=>"orange","b"=>"banana","c"=>"apple"), "numbers" => array(1, 2, 3, 4, 5, 6), "holes" => array("first", 5 => "second", "third") ); 上面为建立一个二维数组的范例。此例相当于: $fruits["fruits"]["a"] = "orange"; $fruits["fruits"]["b"] = "banana"; $fruits["fruits"]["c"] = "apple"; $fruits["numbers"][0] = 1; $fruits["numbers"][1] = 2; $fruits["numbers"][2] = 3; $fruits["numbers"][3] = 4; $fruits["numbers"][4] = 5; $fruits["numbers"][5] = 6; $fruits["holes"][0] = "first"; $fruits["holes"][5] = "second"; $fruits["holes"][6] = "third"; array() 事实上并不是函数,而是 PHP 提供的一个语法。 count() 定义: int count(mixed var); 用途: 传回 var (通常为阵列) 的元素个数,非阵列的变量则只有一个元素。没果没有这个 var 变量,则传回 0;如果 var 不是数组,则传回 1。 范例: $names = array("jollen", "nick", "frank"); echo count($names); 输出: 3 current() 定义: mixed current(array array); 用途: 传回目前数组里的指针所指元素的「值」。每一个数组都有一个内部的指针,指向其中的一个元素。数组的所有元素利用双向串行连接,这个指针便指向目前的元素。一开始这个指标是指到数组的第一个元素,利用其他函数存取数组時,便会改变这个指标,current() 便是传回目前所指的数组元素的值,但不会改变这个指标的位置。 传回指针指向数组的范围之外的位置,便传回 false。有一特殊情况要特別小心,当元素的值为 0 或是空字串 "" 时,也会传回 false,此时可改用 echo()函数。 list() list() 并不是一个 function,而是像 array() 一样,属于 PHP 的语法。list() 用来一次给定多个值给多个变量。 范例: <table> <tr> <th>Employee name</th> <th>Salary</th> </tr> <?php $result = mysql($conn, "SELECT id, name, salary FROM employees"); while (list($id, $name, $salary) = mysql_fetch_row($result)) { print(" <tr> ". " <td><a href=info.php3?id=$id>$name</a></td> ". " <td>$salary</td> ". " </tr> "); } ?></table> next() 定义: mixed next(array array); 用途: 传回下一个数组指针所指的值,注意是先把指针往下移,再传回值。如果元素的值是 0 或 "" (空字符串),则传回 false。当指针已指向数组尾段,无法再往下移时,则传回 false。 可利用 echo() 函数来观察数组中是否有 0 或 ""。 prev() 定义: mixed prev(array array); 用途: 将数组内部指针往前移前一位后,再传回元素的值。 reset() 定义: mixed reset(array array); 用途:将数组的指针初始化,即移到第一个元素的位置,并且传回第一个元素的值。 key() 定义: mixed key(array array); 用途: 传回目前 associative array 中的 key,即数组内部指针所指元素位置的 key。配合 reste()、next() 的综合范例如下: $fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple"); arsort($fruits); for(reset($fruits); $key = key($fruits); next($fruits)) { echo "fruits[$key] = ".$fruits[$key]." "; } 输出: fruits[a] = orange fruits[d] = lemon fruits = banana fruits[c] = apple 循环由第一个元素开始拜访所有的元素,到最后一个元素结束。 |