Ошибка Array_combine: выдает неправильные значения и выдает только уникальные значения php - PullRequest
0 голосов
/ 04 мая 2020

привет, все, у меня есть 2 массива

[0] => CD Alaves
[1] => Granada CF
[2] => Getafe
[3] => CD Leganes
[4] => Barcelona
[5] => Getafe
[6] => Atletico Madrid
[7] => Getafe
[8] => Sevilla
[9] => Athletic Bilbao
[10] => CD Leganes

и их соответствующие значения

[0] => 11
[1] => 11
[2] => 11
[3] => 11
[4] => 11
[5] => 10
[6] => 10
[7] => 10
[8] => 10
[9] => 10
[10] => 9

Я сейчас использую

<code>$teamdata=array_combine($clubs,$stats);


echo "<pre>";
print_r($teamdata);
echo "
";

однако он выводит как

[CD Alaves] => 1
[Granada CF] => 1
[Getafe] => 1
[CD Leganes] => 1
[Barcelona] => -
[Atletico Madrid] => 1
[Sevilla] => 1
[Athletic Bilbao] => -
[Real Betis] => 1
[Espanyol] => 1
[Osasuna] => 1
[Villarreal] => 1
[Real Madrid] => 1
[Levante] => 1

, давая уникальные значения слева и 1 с справа

он должен читать

[CD Alves]=>11
[Granada CF]=>11
....

Большое спасибо всем, кто видит это и находит время для ответа.

1 Ответ

0 голосов
/ 04 мая 2020

Пока ваши два исходных массива действительны, то array_combine прекрасно работает:

<?php
$arr1 = array(
    0 => "CD Alaves",
    1 => "Granada CF",
    2 => "Getafe",
    3 => "CD Leganes",
    4 => "Barcelona",
    5 => "Getafe",
    6 => "Atletico Madrid",
    7 => "Getafe",
    8 => "Sevilla",
    9 => "Athletic Bilbao",
    10 => "CD Leganes"
);

$arr2 = array(
    0 => 11,
    1 => 11,
    2 => 11,
    3 => 11,
    4 => 11,
    5 => 10,
    6 => 10,
    7 => 10,
    8 => 10,
    9 => 10,
    10 => 9
);

$res = array_combine($arr1, $arr2);
print_r($res);

// Gives:
Array
 (
    [CD Alaves] => 11
    [Granada CF] => 11
    [Getafe] => 10
    [CD Leganes] => 9
    [Barcelona] => 11
    [Atletico Madrid] => 10
    [Sevilla] => 10
    [Athletic Bilbao] => 10
)

Рабочий пример: http://sandbox.onlinephpfunctions.com/code/a6da80745eff9ff9b598fe4a2d7fbd8d71d3fb08

Четный если ваши массивы представляют собой одиночные значения без явных ключей, он будет работать (php добавляет нумерацию c индексов в любом случае)

<?php
$arr1 = array(
    "CD Alaves",
    "Granada CF",
    "Getafe",
    "CD Leganes",
    "Barcelona",
    "Getafe",
    "Atletico Madrid",
    "Getafe",
    "Sevilla",
    "Athletic Bilbao",
    "CD Leganes"
);

$arr2 = array(
    11,
    11,
    11,
    11,
    11,
    10,
    10,
    10,
    10,
    10,
    9
);

$res = array_combine($arr1, $arr2);
print_r($res);

// Prints the same output as above.
...