Php 如何从键为arg的函数返回数组的键?
我已经把我要解释的内容简化了Php 如何从键为arg的函数返回数组的键?,php,Php,我已经把我要解释的内容简化了 $array ('name' => 1, 'notname' => 1, 'anothername' => 2); function a($name1, $name2){ $total = $name1 + $name2; $winner = rand(0, $total); if ($winner > name2){ $winner = $name1; } else { $winner = $name2;
$array ('name' => 1, 'notname' => 1, 'anothername' => 2);
function a($name1, $name2){
$total = $name1 + $name2;
$winner = rand(0, $total);
if ($winner > name2){
$winner = $name1;
} else {
$winner = $name2;
}
return $winner;
}
echo a($array['name'], $array['notname']);
我不想返回(并回显)赢家号码,而是回显赢家钥匙的名称
我觉得我正在努力解决这个问题。既然你说你在处理一个更复杂的问题,我就假设
echo 'name';
我不会这么做的
从数组中获取密钥的一个好方法是使用foreach循环。就你上面的例子来说
foreach($array as $key => $value){ echo $key; }
会回来吗
name notname
我不知道这是否有帮助,但如果没有更多的信息,这是我能做的最好的事情。既然你说你在处理一个更复杂的问题,我就假设
echo 'name';
我不会这么做的
从数组中获取密钥的一个好方法是使用foreach循环。就你上面的例子来说
foreach($array as $key => $value){ echo $key; }
会回来吗
name notname
我不知道这是否有帮助,但如果没有更多的信息,这是我能做的最好的事情。既然你说你在处理一个更复杂的问题,我就假设
echo 'name';
我不会这么做的
从数组中获取密钥的一个好方法是使用foreach循环。就你上面的例子来说
foreach($array as $key => $value){ echo $key; }
会回来吗
name notname
我不知道这是否有帮助,但如果没有更多的信息,这是我能做的最好的事情。既然你说你在处理一个更复杂的问题,我就假设
echo 'name';
我不会这么做的
从数组中获取密钥的一个好方法是使用foreach循环。就你上面的例子来说
foreach($array as $key => $value){ echo $key; }
会回来吗
name notname
我不知道这是否有帮助,但如果没有更多信息,我只能这样做。首先,您的数组声明中有一个错误,应该是:
$array('name' => 1, 'notname' => 2)
其次,您基本上编写了一个函数,将变量作为参数,然后返回它。您只将值传递给该函数,就像您要编写echo a('something')一样
另外,如果您这样写,“name”是数组中第一个值的键。我想你想要1作为键,“name”作为值,所以你必须反过来写
$array(1 => 'name)
此外,我还建议对CS基础知识进行另一种解读:)首先,数组声明中有一个错误,应该是:
$array('name' => 1, 'notname' => 2)
其次,您基本上编写了一个函数,将变量作为参数,然后返回它。您只将值传递给该函数,就像您要编写echo a('something')一样
另外,如果您这样写,“name”是数组中第一个值的键。我想你想要1作为键,“name”作为值,所以你必须反过来写
$array(1 => 'name)
此外,我还建议对CS基础知识进行另一种解读:)首先,数组声明中有一个错误,应该是:
$array('name' => 1, 'notname' => 2)
其次,您基本上编写了一个函数,将变量作为参数,然后返回它。您只将值传递给该函数,就像您要编写echo a('something')一样
另外,如果您这样写,“name”是数组中第一个值的键。我想你想要1作为键,“name”作为值,所以你必须反过来写
$array(1 => 'name)
此外,我还建议对CS基础知识进行另一种解读:)首先,数组声明中有一个错误,应该是:
$array('name' => 1, 'notname' => 2)
其次,您基本上编写了一个函数,将变量作为参数,然后返回它。您只将值传递给该函数,就像您要编写echo a('something')一样
另外,如果您这样写,“name”是数组中第一个值的键。我想你想要1作为键,“name”作为值,所以你必须反过来写
$array(1 => 'name)
此外,我建议对CS基础知识进行另一种解读:)我不太确定您想要什么,但在我看来,您要么试图根据其在数组中的位置找到一个键,要么根据相应的值找到一个键。有几个函数可能对您有用 从
$example=array('a'=>1,'b'=>2,'c'=>3)开始代码>。字母是键,数字是值
- 将按顺序返回包含原始数组的键的新数组
array\u键($example)
将返回array(0=>a',1=>b',2=>c')
。(您可以使用此选项按位置查找键)
- 将返回一个新数组,其中的键与值交换
array\u flip($example)
将返回array(1=>'a',2=>'b',3=>'c')
- 将返回第一个匹配值的键<代码>数组搜索($example,2)
将返回'b'
编辑:听起来你想随机拔出一把钥匙?
array\u key($array)[rand(0,count($array)-1)]
编辑2:好的,我猜你的意思是数组的值是相应名称获胜的概率。(?) 下面是我将如何编写该函数:
function selectWinner($players) {
$select = mt_rand() / mt_getrandmax() * array_sum($players);
$position = 0;
foreach ($players as $name => $probability) {
if (($position += $probability) >= $select) return $name;
}
}
现在假设我们有一个数组:
$players = array('Bob' => 1, 'Bert' => 1, 'Betty' => 2);
调用selectWinner($players)
将返回Bob或Bert 25%的时间,并返回Betty 50%的时间。概率不必是整数
对于测试:
for ($i = 0; $i < 10000; $i++) @$counts[selectWinner($players)]++;
print_r($counts);
我不确定您想要什么,但我觉得您要么试图根据其在数组中的位置找到一个键,要么试图根据相应的值找到一个键。有几个函数可能对您有用 从
$example=array('a'=>1,'b'=>2,'c'=>3)开始代码>。字母是键,数字是值
- 将按顺序返回包含原始数组的键的新数组
array\u键($example)
将返回array(0=>a',1=>b',2=>c')
。(您可以使用此选项按位置查找键)
- 将返回一个新数组,其中的键与值交换
array\u flip($example)
将返回array(1=>