在 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() 用来一次给定多个值给多个变量。
范例:
Employee name
Salary
$result = mysql($conn, "SELECT id, name, salary FROM employees");
while (list($id, $name, $salary) = mysql_fetch_row($result)) {
print("
".
" $name
".
" $salary
".
"
");
}
?>
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[b] = banana
fruits[c] = apple
循环由第一个元素开始拜访所有的元素,到最后一个元素结束。