如何仅提取数组键(字符串)的一部分并更改其大小写
How extract only a part of a array key (string) & change its case
我有一个名为 $Bond
的数组:
$Bond = array (
'Sean Connery' => 'Dr. No',
'George Lazenby' => 'On Her Majesty\'s Secret Service',
'Roger Moore' => 'Live and Let Die',
'Timothy Dalton' => 'The Living Daylights',
'Pierce Brosnan' => 'GoldenEye',
'Daniel Craig' => 'Casino Royal'
);
我只需要从键中提取姓氏并将它们打印为大写。
我到底该怎么做?
您可以按照几种方法使用 array_keys()
创建一个键数组,然后使用 for()
遍历您的键数组,用 explode()
拆分名称并转换将姓氏 (end($info)
) 设为 strtoupper()
。见代码:
<?php
$Bond = array (
'Sean Connery' => 'Dr. No',
'George Lazenby' => 'On Her Majesty\'s Secret Service',
'Roger Moore' => 'Live and Let Die',
'Timothy Dalton' => 'The Living Daylights',
'Pierce Brosnan' => 'GoldenEye',
'Daniel Craig' => 'Casino Royal'
);
$array_keys = array_keys($Bond);
for($i = 0; $i < count($array_keys); $i++) {
$info = explode(' ', $array_keys[$i]);
echo strtoupper(end($info)) . "<br>\n";
}
?>
或者您可以使用 foreach()
遍历您的数组,将名称与 explode()
分开,然后将姓氏 (end($info)
) 转换为带有 strtoupper()
的大写字母像这样:
<?php
$Bond = array (
'Sean Connery' => 'Dr. No',
'George Lazenby' => 'On Her Majesty\'s Secret Service',
'Roger Moore' => 'Live and Let Die',
'Timothy Dalton' => 'The Living Daylights',
'Pierce Brosnan' => 'GoldenEye',
'Daniel Craig' => 'Casino Royal'
);
foreach($Bond as $key => $value) {
$info = explode(' ', $key);
echo strtoupper(end($info)) . "<br>\n";
}
?>
两种情况下的输出:
CONNERY
LAZENBY
MOORE
DALTON
BROSNAN
CRAIG
这将遍历每个项目并为您提供姓氏。
foreach($box as $k=>$v){
$lastName = explode(' ',$k)[1];
echo strtoupper($lastName);
}
如果有人的名字像 "Mary Jo" 或 "Bobby Jo",这可能会中断。在这种情况下,如果要发生这种情况,您可能必须进行一些更改。
编辑。我实现了结束功能以确保姓氏。
foreach($box as $k=>$v){
$lastName = explode(' ',$k);
echo strtoupper(end($lastName));
}
因为演员名字落在键上,使用foreach,那么你可以使用strrchr
+ substr
来获取姓氏:
foreach($Bond as $name => $movie) {
$last = strtoupper(substr(strrchr($name, ' '), 1));
echo $last, '<br/>';
}
这应该适合你,漂亮而紧凑:
(这里我遍历所有数组键 array_keys()
, where I then explode()
each key by a space as delimiter. And then access the last element which I return in strtoupper()
大小写)
<?php
$lastNamesUpper = array_map(function($v){
return strtoupper(explode(" ", $v)[substr_count($v, " ")]);
}, array_keys($Bond));
foreach($lastNamesUpper as $v)
echo "$v<br>";
?>
输出:
CONNERY
LAZENBY
MOORE
DALTON
BROSNAN
CRAIG
我有一个名为 $Bond
的数组:
$Bond = array (
'Sean Connery' => 'Dr. No',
'George Lazenby' => 'On Her Majesty\'s Secret Service',
'Roger Moore' => 'Live and Let Die',
'Timothy Dalton' => 'The Living Daylights',
'Pierce Brosnan' => 'GoldenEye',
'Daniel Craig' => 'Casino Royal'
);
我只需要从键中提取姓氏并将它们打印为大写。
我到底该怎么做?
您可以按照几种方法使用 array_keys()
创建一个键数组,然后使用 for()
遍历您的键数组,用 explode()
拆分名称并转换将姓氏 (end($info)
) 设为 strtoupper()
。见代码:
<?php
$Bond = array (
'Sean Connery' => 'Dr. No',
'George Lazenby' => 'On Her Majesty\'s Secret Service',
'Roger Moore' => 'Live and Let Die',
'Timothy Dalton' => 'The Living Daylights',
'Pierce Brosnan' => 'GoldenEye',
'Daniel Craig' => 'Casino Royal'
);
$array_keys = array_keys($Bond);
for($i = 0; $i < count($array_keys); $i++) {
$info = explode(' ', $array_keys[$i]);
echo strtoupper(end($info)) . "<br>\n";
}
?>
或者您可以使用 foreach()
遍历您的数组,将名称与 explode()
分开,然后将姓氏 (end($info)
) 转换为带有 strtoupper()
的大写字母像这样:
<?php
$Bond = array (
'Sean Connery' => 'Dr. No',
'George Lazenby' => 'On Her Majesty\'s Secret Service',
'Roger Moore' => 'Live and Let Die',
'Timothy Dalton' => 'The Living Daylights',
'Pierce Brosnan' => 'GoldenEye',
'Daniel Craig' => 'Casino Royal'
);
foreach($Bond as $key => $value) {
$info = explode(' ', $key);
echo strtoupper(end($info)) . "<br>\n";
}
?>
两种情况下的输出:
CONNERY
LAZENBY
MOORE
DALTON
BROSNAN
CRAIG
这将遍历每个项目并为您提供姓氏。
foreach($box as $k=>$v){
$lastName = explode(' ',$k)[1];
echo strtoupper($lastName);
}
如果有人的名字像 "Mary Jo" 或 "Bobby Jo",这可能会中断。在这种情况下,如果要发生这种情况,您可能必须进行一些更改。
编辑。我实现了结束功能以确保姓氏。
foreach($box as $k=>$v){
$lastName = explode(' ',$k);
echo strtoupper(end($lastName));
}
因为演员名字落在键上,使用foreach,那么你可以使用strrchr
+ substr
来获取姓氏:
foreach($Bond as $name => $movie) {
$last = strtoupper(substr(strrchr($name, ' '), 1));
echo $last, '<br/>';
}
这应该适合你,漂亮而紧凑:
(这里我遍历所有数组键 array_keys()
, where I then explode()
each key by a space as delimiter. And then access the last element which I return in strtoupper()
大小写)
<?php
$lastNamesUpper = array_map(function($v){
return strtoupper(explode(" ", $v)[substr_count($v, " ")]);
}, array_keys($Bond));
foreach($lastNamesUpper as $v)
echo "$v<br>";
?>
输出:
CONNERY
LAZENBY
MOORE
DALTON
BROSNAN
CRAIG