【问题标题】:php direct variable assignmentphp直接变量赋值
【发布时间】:2014-09-22 07:51:52
【问题描述】:

我很难弄清楚如何将值直接分配给数组键。我认为我现在使用的代码(有效)效率低下,并且每次导入时这段代码都会运行几千次。

所以我在一个数组中执行了一个 foreach 循环,其中一个操作是将数组键从 FEMALE 更改为 F,或者将 MALE 更改为 M。

目前我通过字符串传递值,因为我尝试直接设置它的代码失败。

if ($csv[$k] ['gender'] == 'FEMALE') {
  $string = 'F';
} else {
  $string = 'M';
};
$csv[$k] ['gender'] = $string;

/编辑

用于加载 CSV 文件然后更改列名并对数据进行一些改进(captical 等)的数组函数的总代码如下。

foreach ( $csv as $k=>$v )
{
  $csv[$k] ['firstname']                = ucfirst(strtolower($csv[$k] ['firstname']));
  $csv[$k] ['lastname']                 = ucfirst(strtolower($csv[$k] ['lastname']));
  $csv[$k] ['city']                     = ucfirst(strtolower($csv[$k] ['city']));
  $csv[$k] ['street']                   = ucfirst(strtolower($csv[$k] ['street']));
  $csv[$k] ['email']                    = strtolower($csv[$k] ['email']);

  if ($csv[$k] ['gender'] == 'FEMALE') {
    $string = 'F';
  } else {
    $string = 'M';
  };
  $csv[$k] ['gender'] = $string;
}

【问题讨论】:

  • 你能把这段代码粘贴到这段代码前面几行吗?
  • 在再次保存后如何使用字符串还是仅在循环中使用?而不是设置一个变量,你可以做一个 $csv[$k]['gender'][0] 总是得到第一个字符
  • 我是 stackoverflow 的新手,所以还要弄清楚如何正确编辑内容。
  • 你总是可以通过使用三元运算符$csv[$k]['gender'] = $csv[$k]['gender'] == 'FEMALE' ? 'F' : 'M'; 得到这样“更短”的东西,reads 更好的是由你决定......毕竟,你仍然需要当您明天、下个月、一年后查看代码时,了解代码的作用……

标签: php arrays variables


【解决方案1】:

如果你想稍微简化你的代码 sn-p 你可以使用这个:

$csv[$k]['gender']  = ( $csv[$k]['gender'] == "FEMALE" ) ? "F" : "M";

如果“female”为真,这会将 $csv[$k]['gender'] 设置为“F”,如果为假,则设置为“M”。

另外,如果您只想将值从男性/女性设置为 F/M,您可以将其子串化

$csv[$k]['gender'] = substring( $csv[$k]['gender'], 0, 1 );

【讨论】:

  • 我想就是这样。但也非常感谢(非常快)其他评论者。我使用了第一个示例,因为我认为我会在 CSV 文件可能有其他名称(语言)来表示男性/女性的其他地方重复使用代码。
猜你喜欢
  • 2011-03-05
  • 2015-12-13
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 2012-08-23
  • 1970-01-01
  • 2011-09-10
相关资源
最近更新 更多