php:如何从数字索引中获取关联数组键?
如果我有:php:如何从数字索引中获取关联数组键?,php,key,associative-array,Php,Key,Associative Array,如果我有: $array = array( 'one' =>'value', 'two' => 'value2' ); 如何从$array[1]获取字符串one $array = array( 'one' =>'value', 'two' => 'value2' ); $allKeys = array_keys($array); echo $allKeys[0]; 这将输出: one fruit1<br /> fruit4<br /> fr
$array = array( 'one' =>'value', 'two' => 'value2' );
如何从$array[1]
获取字符串one
$array = array( 'one' =>'value', 'two' => 'value2' );
$allKeys = array_keys($array);
echo $allKeys[0];
这将输出:
one
fruit1<br />
fruit4<br />
fruit5<br />
或者如果你需要它在一个循环中
foreach ($array as $key => $value)
{
echo $key . ':' . $value . "\n";
}
//Result:
//one:value
//two:value2
你没有。您的阵列没有密钥
[1]
。你可以:
- 创建一个新数组,其中包含键:
$newArray = array_keys($array); echo $newArray[0];
但是值“one”位于echo array_keys($array)[$i];
,而不是$newArray[0]
[1]
捷径是:echo current(array_keys($array));
- 获取数组的第一个键:
reset($array); echo key($array);
- 获取值“value”对应的键:
这完全取决于你到底想做什么。事实是,
[1]
与“一”不对应,无论你如何转动它。你可以这样做:
$array = array( 'one' =>'value', 'two' => 'value2' );
$keys = array_keys($array);
echo $keys[0]; // one
echo $keys[1]; // two
function asoccArrayValueWithNumKey(&$arr, $key) {
if (!(count($arr) > $key)) return false;
reset($array);
$aux = -1;
$found = false;
while (($auxKey = key($array)) && !$found) {
$aux++;
$found = ($aux == $key);
}
if ($found) return $array[$auxKey];
else return false;
}
$val = asoccArrayValueWithNumKey($array, 0);
$val = asoccArrayValueWithNumKey($array, 1);
etc...
我还没有试过这个代码,但我很确定它会起作用
祝你好运 该功能帮助了我,而且非常简单:
函数的作用是:返回
当前正由内部指针指向。它不动
指针以任何方式移动。如果内部指针指向端点之外
如果元素列表中的元素为空或数组为空,则key()返回NULL
例如:
上述示例将输出:
one
fruit1<br />
fruit4<br />
fruit5<br />
1
水果4
水果5
如果您只计划使用一个特定的键,则可以使用一行来完成此操作,而无需存储所有键的数组:
$newArray = array_keys($array);
echo $newArray[0];
echo array_keys($array)[$i];
扩展Ram Dane的答案,该函数是获取数组当前索引键的另一种方法。您可以创建以下函数
function get_key($array, $index){
$idx=0;
while($idx!=$index && next($array)) $idx++;
if($idx==$index) return key($array);
else return '';
}
如果它是第一个元素,即
$array[0]
,您可以尝试:
echo key($array);
next($array);
echo key($array);
如果是第二个元素,即$array[1]
,您可以尝试:
echo key($array);
next($array);
echo key($array);
我认为当所需元素是数组的第一个、第二个或最多第三个元素时,应该使用此方法。对于其他情况,应使用循环,否则代码可读性会降低。还有一个示例:
获取数组中最频繁的出现次数:
PHP>=7.3:
$ php --version
PHP 7.4.3 (cli) (built: Oct 6 2020 15:47:56) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
$ php -a
Interactive mode enabled
php > $a = array_count_values(array('abc','abc','def','def','def'));
php > var_dump($a);
array(2) {
["abc"]=>
int(2)
["def"]=>
int(3)
}
php > arsort($a);
php > var_dump($a);
array(2) {
["def"]=>
int(3)
["abc"]=>
int(2)
}
php > var_dump(array_key_first($a));
string(3) "def"
php > var_dump(array_keys($a)[1]);
string(3) "abc"
如果您有键,您可以轻松查询值(=频率)。它会回显所有键。但topicstarter需要通过数字索引获取密钥。不一样,我很清楚这一点。但考虑到topicstarter对php来说是新手,这可能是他试图实现的,只是不知道foreach语法;)换句话说,这是关于返回关联数组的第n个数组键;这在将来可能行不通。相反,请详细介绍该函数的功能以及如何使用它。谢谢。。。这就是for-loopNote中任何人所需的全部内容:这需要PHP5.4+-|。@Pang很高兴知道!谢谢