这样的事情怎么可能:
我有一个名为Player的对象:
class Player
{
public $name;
public $lvl;
}
我有一系列这些玩家:$ array。
例如$array[4]->name = 'Bob';
我想在$ array中搜索名为“Bob”的玩家。
在不知道数组键的情况下,如何在$ array中搜索名为“Bob”的Player,以便它返回键#?例如,它应该返回4
。
array_search()
会在这种情况下运作吗?它将如何格式化?
答案 0 :(得分:3)
使用array_filter
将返回一个只包含匹配键的新数组。
$playerName = 'bob';
$bobs = array_filter($players, function($player) use ($playerName) {
return $player->name === $playerName;
});
答案 1 :(得分:1)
根据php docs,array_search确实可行:
$players = array(
'Mike',
'Chris',
'Steve',
'Bob'
);
var_dump(array_search('Bob', $players)); // Outputs 3 (0-index array)
- 编辑 -
抱歉,快速阅读帖子,没看到你有一个对象数组,你可以这样做:
$playersScalar = array(
'Mike',
'Chris',
'Steve',
'Bob'
);
class Player
{
public $name;
public $lvl;
}
foreach ($playersScalar as $playerScaler) {
$playerObject = new Player;
$playerObject->name = $playerScaler;
$playerObjects[] = $playerObject;
}
function getPlayerKey(array $players, $playerName)
{
foreach ($players as $key => $player) {
if ($player->name === $playerName) {
return $key;
}
}
}
var_dump(getPlayerKey($playerObjects, 'Steve'));