比较foreach循环中的字符串不会返回正确的数组

时间:2015-07-01 01:23:12

标签: php arrays foreach string-comparison

我必须创建一个专门的方法来处理作者姓名的显示方式。我需要做的是匹配作者角色,并向具有相同角色的任何二级作者($ author2)显示主要作者($ author)。

在下面的例子中,应该返回的作者数组是[" Smith"," Jones"]。

输入数组示例:

$author = "Smith";
$author2 = ["Jones", "Berry", "Mitchell"];
$auth_role = "";
$auth2_role = [ "", "editor", "editor"];

目前,该方法仅输出主作者($ author),但不输出任何其他作者($ author2)。当我将print语句放入代码时,它显示它在第一个return语句处返回。

到目前为止我所写的方法如下。我认为代码正在跳过或覆盖foreach循环。

/**
 * Get the authors for display.
 *
 * @return array
 */
public function getAuthors()
{
   $leader = $this->marcRecord->getLeader();
   $bibLvl = $leader[7];
   $over_title = $this->fields['item_title_txt'];

   $author2 = $this->getSecondaryAuthors();
   $author = $this->getPrimaryAuthor();
   $auth_role = $this->getPrimaryAuthorRole();
   $auth2_role = $this->getSecondaryAuthorRoles();

   $authdisplay = [$author];

   if (!empty($over_title) && ($bibLvl=='a')) {
    $i=0;
    foreach ($auth2_role as $field){
      if ($field == $auth_role) {
        $authdisplay = [$field];
      }
      $i++;
    }
    return $authdisplay;
  }
  return $authdisplay;
}

您是否有任何关于如何使方法正确显示作者列表的提示(例如,在上面的示例数组中,那将是[" Smith"," Jones&# 34;])?谢谢。

1 个答案:

答案 0 :(得分:0)

您需要用以下内容替换if:

var SomeAwesomeComponent = React.createClass({

getInitialState: function(){
  return {
      text: 'Test'
  }
},

componentDidMount: function(){
  var self = this;
setInterval(function(){
    self.setState({
        text: 'Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello '
    })
  },2000)
},

render: function() {
    var cardStyle = {
        transition: '1s'
    }
    return (
        <div>
            <Card>
                <CardText transitionEnabled={true} style={{cardStyle}}>
                    {this.state.text}
                </CardText>
            </Card>
        </div>
    );
}

结果:

if (!empty($over_title) && ($bibLvl=='a')) {
    foreach ($auth2_role as $key=>$field){
        if ($field == $auth_role) {
            $authdisplay[] = $author2[$key];
        }
    }
    return $authdisplay;
}