Php In_数组不工作-比较两个文件

Php In_数组不工作-比较两个文件,php,Php,下面的代码是我正在尝试做的一个简单版本。代码将在两个文件中读取,查看是否有匹配的条目,如果有,则显示该项目的数字差异。但它不起作用。第一个回音显示单词,但第二个回音从未到达。有人能解释一下我遗漏了什么吗 $mainArry = array('Albert,8'); $arry = array('Albert,12'); foreach ($arry as $line) { $kword = explode(',', $line);

下面的代码是我正在尝试做的一个简单版本。代码将在两个文件中读取,查看是否有匹配的条目,如果有,则显示该项目的数字差异。但它不起作用。第一个回音显示单词,但第二个回音从未到达。有人能解释一下我遗漏了什么吗

    $mainArry = array('Albert,8');
    $arry =     array('Albert,12');

    foreach ($arry as $line) {
        $kword = explode(',', $line); 
        echo 'kword '.$kword[0];
        if (in_array($kword[0], $mainArry)) {
            echo 'line '.$line. ' has count of '.$kword[1] . '<br>';
        }
    } 
$mainArry=array('Albert,8');
$arry=数组('Albert,12');
foreach($arry作为$line){
$kword=分解(“,”,$line);
回显'kword'。$kword[0];
if(在数组中($kword[0],$mainArry)){
回显'line'。$line.'的计数为'$kword[1].
'; } }
您试图将字符串
Albert
Albert,8
进行比较,因此它们不匹配。如果要检查字符串是否包含关键字,假设数组中有多个元素,可以使用:

$mainArry = array('Albert,8');
$arry =     array('Albert,12');

foreach ($arry as $line) {
    $kword = explode(',', $line); 
    echo 'kword '.$kword[0];
    foreach ($mainArry as $comp) {
        if (strstr($comp, $kword[0])) {
            echo 'line '.$line. ' has count of '.$kword[1] . '<br>';
        }
    }
}
$mainArry=array('Albert,8');
$arry=数组('Albert,12');
foreach($arry作为$line){
$kword=分解(“,”,$line);
回显'kword'。$kword[0];
foreach($mainArry作为$comp){
if(strstr($comp,$kword[0])){
回显'line'。$line.'的计数为'$kword[1].
'; } } }

示例:

您试图将字符串
Albert
Albert,8
进行比较,因此它们不匹配。如果要检查字符串是否包含关键字,假设数组中有多个元素,可以使用:

$mainArry = array('Albert,8');
$arry =     array('Albert,12');

foreach ($arry as $line) {
    $kword = explode(',', $line); 
    echo 'kword '.$kword[0];
    foreach ($mainArry as $comp) {
        if (strstr($comp, $kword[0])) {
            echo 'line '.$line. ' has count of '.$kword[1] . '<br>';
        }
    }
}
$mainArry=array('Albert,8');
$arry=数组('Albert,12');
foreach($arry作为$line){
$kword=分解(“,”,$line);
回显'kword'。$kword[0];
foreach($mainArry作为$comp){
if(strstr($comp,$kword[0])){
回显'line'。$line.'的计数为'$kword[1].
'; } } }

示例:

您的$mainArry包含一个元素:字符串
'Albert,8'
。看起来您希望将其用作数组(元素
'Albert'
'8'
)而不是字符串

您提到代码将从两个文件中读取,因此您可以像使用$arry一样将其“分解”为一个真正的数组。更简单的方法是将CSV字符串解析为$mainArry

$inputString = 'Albert,8';
$mainArry = str_getcsv($inputString); // now $mainArry is ['Albert','8']
$arry =     array('Albert,12');

foreach ($arry as $line) {
    $kword = explode(',', $line); 
    echo 'kword '.$kword[0];
    if (in_array($kword[0], $mainArry)) {
        echo 'line '.$line. ' has count of '.$kword[1] . '<br>';
    }
} 
$inputString='Albert,8';
$mainArry=str_getcsv($inputString);//现在$mainArry是['Albert','8']
$arry=数组('Albert,12');
foreach($arry作为$line){
$kword=分解(“,”,$line);
回显'kword'。$kword[0];
if(在数组中($kword[0],$mainArry)){
回显'line'。$line.'的计数为'$kword[1].
'; } }

测试它。

您的$mainArry包含一个元素:字符串
'Albert,8'
。看起来您希望将其用作数组(元素
'Albert'
'8'
)而不是字符串

您提到代码将从两个文件中读取,因此您可以像使用$arry一样将其“分解”为一个真正的数组。更简单的方法是将CSV字符串解析为$mainArry

$inputString = 'Albert,8';
$mainArry = str_getcsv($inputString); // now $mainArry is ['Albert','8']
$arry =     array('Albert,12');

foreach ($arry as $line) {
    $kword = explode(',', $line); 
    echo 'kword '.$kword[0];
    if (in_array($kword[0], $mainArry)) {
        echo 'line '.$line. ' has count of '.$kword[1] . '<br>';
    }
} 
$inputString='Albert,8';
$mainArry=str_getcsv($inputString);//现在$mainArry是['Albert','8']
$arry=数组('Albert,12');
foreach($arry作为$line){
$kword=分解(“,”,$line);
回显'kword'。$kword[0];
if(在数组中($kword[0],$mainArry)){
回显'line'。$line.'的计数为'$kword[1].
'; } }

测试它。

我不推荐您的工作方式,但这是一个解决方案,基本上,您应用于
$arry
的过程也应该应用于您尝试比较它的
$mainArry

 $mainArry = array('Albert,8');
    $arry =     array('Albert,12');

/***
NEW function below takes the valus out of the main array.
    and sets them in their own array so they can be properly compared. 
***/
 foreach ($mainArry as $arrr){
 $ma = explode(",",$arrr);
 $names[] = $ma[0];
 $values[] = $ma[1];
 }
 unset($arrr,$ma);


    foreach ($arry as $line) {
        $kword = explode(',', $line); 
        echo 'kword '.$kword[0];
        /// note var reference here is updated. 
        if (in_array($kword[0], $names)) {
            echo '<br>line '.$kword[0]. ' has count of '.$kword[1] . '<br>';
        }
    }
$mainArry=array('Albert,8');
$arry=数组('Albert,12');
/***
下面的新函数将值从主数组中取出。
并将它们设置在自己的数组中,以便可以正确比较它们。
***/
外汇($mainArry作为$arrr){
$ma=爆炸(“,”,$arrr);
$names[]=$ma[0];
$values[]=$ma[1];
}
未结算($arrr,$ma);
foreach($arry作为$line){
$kword=分解(“,”,$line);
回显'kword'。$kword[0];
///注:此处的var参考已更新。
if(在数组中($kword[0],$names)){
回显“
行“%$kword[0]”的计数为“%$kword[1]”。
; } }
是的,在一行中也做了同样的事情,但我想进一步说明值设置的幕后操作<代码>:-/


我不推荐您的工作方式,但这是一个解决方案,基本上,您应用于
$arry
的过程也应该应用于您试图与之进行比较的
$mainArry

 $mainArry = array('Albert,8');
    $arry =     array('Albert,12');

/***
NEW function below takes the valus out of the main array.
    and sets them in their own array so they can be properly compared. 
***/
 foreach ($mainArry as $arrr){
 $ma = explode(",",$arrr);
 $names[] = $ma[0];
 $values[] = $ma[1];
 }
 unset($arrr,$ma);


    foreach ($arry as $line) {
        $kword = explode(',', $line); 
        echo 'kword '.$kword[0];
        /// note var reference here is updated. 
        if (in_array($kword[0], $names)) {
            echo '<br>line '.$kword[0]. ' has count of '.$kword[1] . '<br>';
        }
    }
$mainArry=array('Albert,8');
$arry=数组('Albert,12');
/***
下面的新函数将值从主数组中取出。
并将它们设置在自己的数组中,以便可以正确比较它们。
***/
外汇($mainArry作为$arrr){
$ma=爆炸(“,”,$arrr);
$names[]=$ma[0];
$values[]=$ma[1];
}
未结算($arrr,$ma);
foreach($arry作为$line){
$kword=分解(“,”,$line);
回显'kword'。$kword[0];
///注:此处的var参考已更新。
if(在数组中($kword[0],$names)){
回显“
行“%$kword[0]”的计数为“%$kword[1]”。
; } }
是的,在一行中也做了同样的事情,但我想进一步说明值设置的幕后操作<代码>:-/


第一个数组仅包含1个元素,
Albert,8
。这是有意的还是您想将两个项目存储为
[“Albert”,8]
?看起来您正在搜索$mainArray以查找'Albert'的名称,但$mainArray只有'Albert,8',因此不匹配。stackoverflow上的答案的一个好处是,它们可以帮助其他用户解决类似的问题。因为你的问题真的很做作,所以在这方面收效甚微。如果你能从更多的角度来看待你想要实现的目标和目标,那就更好了