Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中从数组中获取键和值_Php - Fatal编程技术网

在php中从数组中获取键和值

在php中从数组中获取键和值,php,Php,使用此阵列数据: $tokens = array ( 31536000 => 'year', 2592000 => 'month', 604800 => 'week', 86400 => 'day', 3600 => 'hour', 60 => 'minute', 1 => 'second' ); 我希望能够获得密钥和值,我尝

使用此阵列数据:

$tokens = array (
        31536000 => 'year',
        2592000 => 'month',
        604800 => 'week',
        86400 => 'day',
        3600 => 'hour',
        60 => 'minute',
        1 => 'second'
        );
我希望能够获得密钥和值,我尝试了

$tokens["day"];
但它什么也不退

如何获取每个项目,但不在循环中?例如foreach,这是因为day是值,而不是键

$tokens[86400]等于天

你需要重新排列你的阵列,这样“一天”=>86400,而不是相反

一个简单的方法是使用。

$key=array\u search'day',$tokens;可以使用值获取索引

美元代币[天];这不会返回任何内容,因为“day”不是索引,而是一个值

可以使用索引获取数组的值 喜欢
$token['86400']这将返回值day

如果您想通过已知值访问密钥,那么您只需使用array\u flip翻转数组即可:

或者,如果您有权访问执行此操作的代码,则只需首先以正确的方式创建数组:

$tokens = array (
    'year'   => 31536000,
    'month'  => 2592000,
    'week'   => 604800,
    'day'    => 86400,
    'hour'   => 3600,
    'minute' => 60,
    'second' => 1
    );

嗯,这里有几个选择

可以使用foreach循环 可以使用数组搜索函数传递值并获取键。 你可以使用for循环,但它有点凝灰岩 让我们从第一个开始,最简单的:

$my_array = [
2334325 => "val_1",
4354524 => "val_2",
3213144 => "val_3",
3232412 => "val_4"
];

#here we use a "trick" for the foreach loop
foreach($my_array as $key => $val)
{
    echo "Key: $key <br/>Value: $val <br/><br/>";
}
对于其余的部分,即使使用For循环,我也不想走得太深。但我认为这可以帮助你


-继续黑客

必须使用array\u flip交换数组键和值。 这是得到答案的简单方法

$flipped_array = array_flip($tokens);
echo $flipped_array['day'];
结果是:
86400

已经有很多解决方案可用,所以我在这里添加我的解决方案。您还可以将数组_键用作:

说明:

使用array_keys函数获取密钥,然后在原始数组中使用
$tokens[$arrayKeys[3]],因为此索引具有您所需的值日。

这是基本的101个数组:$tokens[1]用于访问第二个和$keys=array\u keys$tokens;若要获取密钥数组,请访问的$keys[0]31536000@Rizier123,实际上你是错的,调用$tokens[0]会产生字符串year的结果,OP的数组以错误的方式反转aroundI认为这是数组反转时存在的最简单的解决方案!
$my_array = [
2334325 => "val_1",
4354524 => "val_2",
3213144 => "val_3",
3232412 => "val_4"
];

#let's make it dynamic. We create a function

function arrSrc($arg)
{
    #we declare a index
    $index;

    #we search the index by given value
    $index = array_search($arg);

    return $index;
}

echo arrSrc("val_1");
$flipped_array = array_flip($tokens);
echo $flipped_array['day'];
$tokens = array (
        31536000 => 'year',
        2592000 => 'month',
        604800 => 'week',
        86400 => 'day',
        3600 => 'hour',
        60 => 'minute',
        1 => 'second'
        );

$arrayKeys = array_keys($tokens);
$requiredVal = $tokens[$arrayKeys[3]];
echo $requiredVal; // result "day"