微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

对于每个要从关联数组获取键和值的对象,如果它们共享相同的键名,则不会返回所有键和值-PHP

如何解决对于每个要从关联数组获取键和值的对象,如果它们共享相同的键名,则不会返回所有键和值-PHP

我正在读取包含以下文本的文件

Vélez Sarsfield|Zárate,Mauro|8|0|0|1|9
Estudiantes|Carrillo,Guido|5|1|0|2|8
Boca Juniors|Gigliotti,Emanuel|3|2|0|2|7
River Plate|Carbonero,Carlos Mario|4|2|0|0|6
Arsenal|Echeverría,Mariano|6|0|0|0|6
Olimpo|Valencia,José Adolfo|6|0|0|0|6
River Plate|Cavenaghi,Fernando Ezequiel|4|0|0|2|6
Boca Juniors|Riquelme,Juan Román|1|0|1|3|5

这是我的代码

 <?PHP
            $handle = fopen("tp7-datos-goleadores.txt","r");
            if ($handle) {
                while (($line = fgets($handle)) !== false) {
                    // process the line read.
                    //hago el asociativo
                    $porciones = explode("|",$line );
                    $arrAsociativo[$porciones[0]] =  $porciones[6];
                }
            
                fclose($handle);
            } else {
                echo "error al leer el archivo";
            } 

            foreach($arrAsociativo as $x => $x_value) {
                echo "Key=" . $x . ",Value=" . $x_value;
                echo "<br>";
            }
    ?>

但它会在html上返回此值:

Key=V�lez Sarsfield,Value=9
Key=Estudiantes,Value=8
Key=Boca Juniors,Value=5
Key=River Plate,Value=6
Key=Arsenal,Value=6
Key=Olimpo,Value=6

如您所见,我的原始文字上有2个Boca Juniors和2个River Plate,但是当我遍历数组时,每个人只能得到一个。为什么呢?

解决方法

您可以通过循环回显索引。或者,只需创建一个带有对联的新数组即可。

<?php

$data =<<<DATA
Vélez Sarsfield|Zárate,Mauro|8|0|0|1|9
Estudiantes|Carrillo,Guido|5|1|0|2|8
Boca Juniors|Gigliotti,Emanuel|3|2|0|2|7
River Plate|Carbonero,Carlos Mario|4|2|0|0|6
Arsenal|Echeverría,Mariano|6|0|0|0|6
Olimpo|Valencia,José Adolfo|6|0|0|0|6
River Plate|Cavenaghi,Fernando Ezequiel|4|0|0|2|6
Boca Juniors|Riquelme,Juan Román|1|0|1|3|5
DATA;

$lines = preg_split('/\R/',$data);
foreach($lines as $line) {
    $rows[] = str_getcsv($line,'|');
}    

foreach($rows as $row) {
    $name_values[] = [$row[0],$row[6]];
}

foreach($name_values as list($name,$value)) {
    echo 'Name: ',$name,',Value: ',$value,"\n";
}

输出:

Name: Vélez Sarsfield,Value: 9
Name: Estudiantes,Value: 8
Name: Boca Juniors,Value: 7
Name: River Plate,Value: 6
Name: Arsenal,Value: 6
Name: Olimpo,Value: 6
Name: River Plate,Value: 6
Name: Boca Juniors,Value: 5

$ name_values的数据结构:

var_export($name_values);

输出:

array (
  0 => 
  array (
    0 => 'Vélez Sarsfield',1 => '9',),1 => 
  array (
    0 => 'Estudiantes',1 => '8',2 => 
  array (
    0 => 'Boca Juniors',1 => '7',3 => 
  array (
    0 => 'River Plate',1 => '6',4 => 
  array (
    0 => 'Arsenal',5 => 
  array (
    0 => 'Olimpo',6 => 
  array (
    0 => 'River Plate',7 => 
  array (
    0 => 'Boca Juniors',1 => '5',)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。