停止将重复项添加到数组中

时间:2015-12-10 02:19:24

标签: php arrays

好的我正在查询数据库并使用结果填充数组,但我不想重复。

@Bean
public ConnectionManager connectionManager() throws Exception{
    boolean isLive = true; /* This should be variable based on my environment */
    return new ConnectionManager (isLive);
}

在我的思维方式中,如果已经存在具有相同$ start的条目,则不应该向数组添加新条目,但出于某种原因,它仍然会添加它。

谁能看到我哪里出错了?

2 个答案:

答案 0 :(得分:2)

<input name="date_from" placeholder="Choose Date" class="input-small filter-element datepicker-dmy" data-date-format="dd-mm-yyyy" type="text" ng-model="date_from"> <input name="date_to" placeholder="Choose Date" class="input-small filter-element datepicker-dmy" data-date-format="dd-mm-yyyy" type="text" ng-model="date_to"> 设置为$start)返回的字符串。 date('c',...是一个数组,其中每个元素也是一个数组。

因此,当您测试$input_arrays时,它将测试您的字符串是否等于in_array($start, $input_arrays, true)数组中的每个数组。字符串总是不等于数组,特别是因为您指定了$input_arrays,这意味着类型必须匹配。

根据您的需要,有多种方法可以解决这个问题,包括......

true

编辑:要根据日历模块的要求获取带有密钥0,1,2,...的 ... if ( !array_key_exists($start, $input_arrays) ){ $input_arrays[$start]= array(title => $title, start => $start, end => $end, color => $color, allDay => $allday); } ... ,请在$input_arrays循环后添加此语句:

while

答案 1 :(得分:1)

$start设置为date('c',...)返回的字符串。 $input_arrays是一个数组,其中每个元素也是一个数组。非空字符串始终不等于非空数组,因此in_array始终返回false。试试这个......

$start = date('c', $row['start_time']);
$startTimesAlreadyAdded = [];
while (strtotime($end) < $row['end_time']){
    $title = 'Teacher Available';
    $color = '#a3a3a3';             
    $end = date('c', strtotime($start) + hoursToSeconds($row_Branch['session']));
    $allday = ($row['allDay'] == "1") ? true : false;
    if ( !in_array($start, $startTimesAlreadyAdded) ) {
        $input_arrays[] = array(title => $title, start => $start, end => $end, color => $color, allDay => $allday);
        $startTimesAlreadyAdded[] = $start;
    }
    $start = date('c', strtotime($end));
}

根据您的日历模块的要求,这将为$input_arrays提供密钥0,1,2,....