【发布时间】:2020-03-04 12:52:58
【问题描述】:
我有一个代码:
$salys = xprofile_get_field_data( '1237', $user_id, $multi_format = 'comma' );
此代码根据用户 ID 在列表中显示国家/地区,例如:
安道尔、阿塞拜疆、巴巴多斯、比利时、伯利兹、不丹、玻利维亚、加拿大
我的目标是只限制我尝试使用 array_slice 的 x 个国家/地区
$skaiciai = array_slice($salys, 0, 5);
然后使用回显它
echo "<textarea>";
print_r($skaiciai);
echo "</textarea>";
但该功能不起作用,并且没有任何回声。
我尝试在这种情况下最多限制 5 个国家/地区,但它不起作用。
编辑 1:
在 cmets 用户的帮助下,我设法限制了我的代码的国家/地区:
<?php
global $bp;
$salys = xprofile_get_field_data( '1237', $user_id, $multi_format = 'comma' );
$array8 = explode(', ', $salys);
$skaiciai = array_slice($array8, 0, 5);
echo "<textarea>";
print_r($skaiciai);
echo "</textarea>";
?>
新问题是输出,因为它在数组示例中提供原始输入:
Array
(
[0] => Andorra
[1] => Azerbaijan
[2] => Barbados
[3] => Belgium
[4] => Belize
)
问题:我需要做一些正则表达式来清理它吗?
【问题讨论】:
-
$salys不是数组,而是字符串。您可以使用explode()拆分它。 (或者也许$multi_format参数取值array?) -
哦,所以这个函数只用于数组,如果这有意义的话,它会从字符串字段中获取数组。多格式是另一个字符串,它只是在每个国家/地区后加上逗号
-
正确,
array_slice()仅适用于数组。如果你想把你的字符串变成一个数组,你可以做$array = explode(', ', $string);,然后在array_slice()中使用$array。 -
但是等等——不要那样做。见the docs here。正如我猜想的那样,您可以将
"array"作为第三个参数传递,然后您将返回一个数组,并且您的代码应该可以正常工作。 -
只需使用
echo implode(',', $skaiciai);在您的文本区域中获取以逗号分隔的国家/地区列表。
标签: php