php array_slice不显示任何内容

时间:2019-11-07 21:36:56

标签: php

我有一个代码:

$salys = xprofile_get_field_data( '1237', $user_id, $multi_format = 'comma' );

此代码在用户ID列表中显示国家/地区,例如:

安道尔,阿塞拜疆,巴巴多斯,比利时,伯利兹,不丹,玻利维亚,加拿大

我的目标是仅限制我尝试使用 array_slice

做的国家数量
    $skaiciai = array_slice($salys, 0, 5);

然后使用

回显它
    echo "<textarea>";  
    print_r($skaiciai);
    echo "</textarea>";

但是该功能无效,并且没有回显任何内容。

在这种情况下,我尝试限制最多5个国家/地区,但这不起作用。

编辑1:

在用户评论的帮助下,我设法限制了我的代码的国家/地区:

<?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
)

问题:我需要做某种正则表达式来清理它吗?

1 个答案:

答案 0 :(得分:0)

我想这就是您想要的:

<?php 
    global $bp;


    $salys = xprofile_get_field_data( '1237', $user_id, $multi_format = 'comma' );
    $array8 = explode(',', $salys);

    $skaiciai = array_slice($array8, 0, 5);

    //remove spaces from beginning and the end of name.
    //for every element in the array
    $skaiciai = array_map('trim',$skaiciai);

    echo "<textarea>";
    //for every element in the array
    //copy the element to var $item
    foreach($skaiciai as $item) {

        echo $item . '<br>' . PHP_EOL;

    }
    echo "</textarea>";

或按照@Nick的建议使用爆破

    $salys = xprofile_get_field_data( '1237', $user_id, $multi_format = 'comma' );
    $array8 = explode(',', $salys);

    $skaiciai = array_slice($array8, 0, 5);

    //remove spaces from beginning and the end of name.
    //for every element in the array
    $skaiciai = array_map('trim',$skaiciai);

    echo "<textarea>";
        echo implode(', ', $skaiciai);
    echo "</textarea>";

在一行中获取值。

使用','而不用空格代替', '可以防止将来用逗号分隔项目,但它们之间没有空格。 但是随后您需要使用trim删除空格,并在以后需要时添加空格。