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上的答案的一个好处是,它们可以帮助其他用户解决类似的问题。因为你的问题真的很做作,所以在这方面收效甚微。如果你能从更多的角度来看待你想要实现的目标和目标,那就更好了