【问题标题】:PHP Laravel Convert array value to upper casePHP Laravel 将数组值转换为大写
【发布时间】:2020-12-18 01:02:52
【问题描述】:

我的 Laravel 项目中有一个包含多个值的数组:

array:1434 [▼
  0 => array:53 [▼
    "contact" => "ANA (dependienta)"
    "mail" => "example@mail.com"
    "phone2" => ""
    "phone3" => ""
    "web" => "0"
    "active" => true
    "province" => "Zaragoza"

  ]
  1 => array:53 [▼
    "contact" => "JACKELINE * VIVIANA"
    "mail" => "mail@example.com"
    "phone2" => ""
    "phone3" => ""
    "web" => "0"
    "active" => true
    "province" => "Barcelona"

  ]

我只想将省值转换为大写,我想得到这个结果:

array:1434 [▼
  0 => array:53 [▼
    "contact" => "ANA (dependienta)"
    "mail" => "example@mail.com"
    "phone2" => ""
    "phone3" => ""
    "web" => "0"
    "active" => true
    "province" => "ZARAGOZA"

  ]
  1 => array:53 [▼
    "contact" => "JACKELINE * VIVIANA"
    "mail" => "mail@example.com"
    "phone2" => ""
    "phone3" => ""
    "web" => "0"
    "active" => true
    "province" => "BARCELONA"

  ]

是否有任何方法或方式可以使用 Laravel Collection 或其他替代方法来实现这一点?

【问题讨论】:

  • 请发布您的 php 代码
  • 没有php代码,只有我的数组的结果
  • 因缺少 PHP 代码而投反对票。

标签: php laravel laravel-5 laravel-5.2 laravel-5.3


【解决方案1】:

如果您使用 Eloquent 从 DB 获取数据,您可以 create an accessor

public function getProvince($value)
{
    return strtoupper($value);
}

如果没有,您可以手动更改:

for ($i = 0; $i < count($data); $i++) {
    $data[$i]['province'] = strtoupper($data[$i]['province']);
}

【讨论】:

  • 我不使用 eloquent,我使用 API 来获取数据
  • 抱歉,我以为您只想将第一个字母大写,其余字母小写。修复了代码。
【解决方案2】:

$collection是对象数组,那就试试这样用吧:

$collection = collect($array);

$keyed = $collection->keyBy(function ($item) {
    return strtoupper($item['province']);
});

$keyed->all();

【讨论】:

  • @Antonio Morales 我想知道你为什么要勾选这个答案?我刚刚测试了这段代码,它没有给出你想要的结果。 keyBy() 会将索引从 01 等更改为大写的省份字符串,并将保持 province 不变。
【解决方案3】:

Str::upper 方法将给定的字符串转换为大写:

use Illuminate\Support\Str;

$string = Str::upper('laravel');

【讨论】:

    【解决方案4】:
    for ($i = 0; $i < count($rp_shops); $i++) { 
        $rp_shops[$i]['province'] = strtoupper($rp_shops[$i]['province']); 
    } 
    dd($rp_shops) 
    

    foreach ($rp_shops as $key => $rp_shop) { 
        $rp_shops[$key]['province'] = strtoupper($rp_shop['province']); 
    } 
    dd($rp_shops)  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-16
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多