foreach($arr as $key=>$value)
{
}能不能不用foreach取得$key?
比如。一个函数getkey($arr[0]) 取得第一个元素的key
我就问问

解决方案 »

  1.   

    有的!
    array_keys()函数就是获取所有的key值!
    比如:
    $arrKeys = array_keys($arr);
    $arr数组的第一个key就是$arrKeys[0]
      

  2.   

    严重bs楼主这种不查手册,出来乱问的事件。
    出来交流,总要有点深度吧。问问题前,先看看手册。 
    //以下来自手册。
    array_keys
    (PHP 4 , PHP 5)array_keys -- 返回数组中所有的键名
    说明
    array array_keys ( array input [, mixed search_value])
    array_keys() 返回 input 数组中的数字或者字符串的键名。 如果指定了可选参数 search_value,则只返回该值的键名。否则 input 数组中的所有键名都会被返回。  
      

  3.   

    array_keys
    (PHP 4, PHP 5)array_keys — 返回数组中所有的键名说明
    array array_keys ( array $input [, mixed $search_value [, bool $strict ]] )
    array_keys() 返回 input 数组中的数字或者字符串的键名。 如果指定了可选参数 search_value,则只返回该值的键名。否则 input 数组中的所有键名都会被返回。自 PHP 5 起,可以用 strict 参数来进行全等比较(===)。 
    Example #1 array_keys() 例子<?php
    $array = array(0 => 100, "color" => "red");
    print_r(array_keys($array));$array = array("blue", "red", "green", "blue", "blue");
    print_r(array_keys($array, "blue"));$array = array("color" => array("blue", "red", "green"),
                   "size"  => array("small", "medium", "large"));
    print_r(array_keys($array));
    ?> 
    以上例程会输出:Array
    (
        [0] => 0
        [1] => color
    )
    Array
    (
        [0] => 0
        [1] => 3
        [2] => 4
    )
    Array
    (
        [0] => color
        [1] => size
    )
      

  4.   

    each
    (PHP 4, PHP 5)each — 返回数组中当前的键/值对并将数组指针向前移动一步 说明
    array each ( array &$array )
    返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,键名为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。 如果内部指针越过了数组的末端,则 each() 返回 FALSE。 
    Example #1 each() 例子<?php
    $foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese");
    $bar = each($foo);
    print_r($bar);
    ?> 
    $bar 现在包含有如下的键/值对: Array
    {
        [1] => bob
        [value] => bob
        [0] => 0
        [key] => 0
    }
    <?php
    $foo = array("Robert" => "Bob", "Seppo" => "Sepi");
    $bar = each($foo);
    print_r($bar);
    ?> 
    $bar 现在包含有如下的键/值对: Array
    {
        [1] => Bob
        [value] => Bob
        [0] => Robert
        [key] => Robert
    }each() 经常和 list() 结合使用来遍历数组,例如: Example #2 用 each() 遍历数组<?php
    $fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
    reset($fruit);
    while (list($key, $val) = each($fruit)) {
        echo "$key => $val\n";
    }
    ?> 
    以上例程会输出:a => apple
    b => banana
    c => cranberry在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用 each 遍历数组,必须使用 reset()。 Caution 
    因为将一个数组赋值给另一个数组时会重置原来的数组指针,因此在上边的例子中如果我们在循环内部将 $fruit 赋给了另一个变量的话将会导致无限循环。 
      

  5.   

    key
    (PHP 4, PHP 5)key — 从关联数组中取得键名说明
    mixed key ( array &$array )
    key() 返回数组中当前单元的键名。 
    Example #1 key() 例子<?php
    $array = array(
     'fruit1' => 'apple',
     'fruit2' => 'orange',
     'fruit3' => 'grape',
     'fruit4' => 'apple',
     'fruit5' => 'apple');// this cycle echoes all associative array
    // key where value equals "apple"
    while ($fruit_name = current($array)) {
        if ($fruit_name == 'apple') {
            echo key($array).'<br />';
        }
        next($array);
    }
    ?>