【问题标题】:Php array_slice doesn't display anythingphp array_slice 不显示任何内容
【发布时间】: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


【解决方案1】:

我想这就是你想要的:

<?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 在评论中的建议使用 implode

    $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 删除空间,如果需要,稍后再添加空间。

【讨论】:

    猜你喜欢
    • 2011-04-17
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 2020-11-10
    • 2012-04-12
    相关资源
    最近更新 更多