平面文件从数组中选择值

Posted

技术标签:

【中文标题】平面文件从数组中选择值【英文标题】:Flat File select values from array 【发布时间】:2014-05-19 07:38:55 【问题描述】:

我有一个平面文件,其中的数据用“,”分隔,我需要将值与 url 进行比较,并只显示具有相同 url 值的值

不需要 PHP 的 CSV 函数,如果与 url 中的值最终相同,我想比较并得到结果

csv 有 4 个值,价格,大小,宽度和高度

URL 值,以相同的顺序(价格、大小、宽度和高度)发送其他值,例如在 url 中我使用字符串 index.php?price=100&size=100&width=200&height=300 发送这个。 ....等

例如:

<?php

    $csv_file=file("test.csv");

    for($i=0;$i<sizeof($csv_file);$i++) 

    $exp_csv=explode(",",$csv_file[$i]);

    foreach($exp_csv as $exp_csv2) 
        $csv_end_values[]=$exp_csv2
    




/// By Other side the url 

$exp_url="100,30,400,500";

$exp_url_values=explode(",",$exp_url);


foreach($exp_url_values as $exp_url_values2) 
    $url_end_values[]=$exp_url_values2;



/// Finally we have 2 arrays one array with all values we 
get in bucle for csv and by other side values get from url , 
now we need compare url values with values of csv , 
for example if in the url we have only 2 values and no 4 show 
only results with the same of 2 values from url and compare 
in the same order , if when compare the values no the same all , get 0 results 


/// For example values from URL 100,,200,, 
if in csv exists one row with the values 100 and 200 
in the same order show as result and if no , no show 


/// In this point i try use array_difference , 
but no works , because i need compare all values i send by 
url and in the same order 


$aa = array_diff($url_end_values,csv_end_values);


$num_results=0;

foreach($aa as $bb) 
    $num_results++;



if ($num_results==0) 
    print "We get Results";

else 
    print "No Results";


?>

【问题讨论】:

PHP 有一个获取 CSV 值并处理它们的函数:fgetcsv();看看吧! 不需要这个 csv 函数,我需要比较我与 url 得到的值,请阅读我的帖子 我已经阅读了你的帖子,首先,你让获得你想要的数组变得很复杂。 ASwell 我不确定你是否得到了你想要的阵列。你需要一个 $key => $value 数组来比较它 - 你只有一个数组,你得到所有值,但你有 0 感觉什么值与什么键匹配。你应该真的检查 fgetcsv() 了。 正如您在帖子中看到的那样,我从 url 获取值和从 csv 获取值,没问题,问题是它以相同的顺序将来自 url 的值与平面文件或 csv 的值进行比较如果值相同则得到结果 你想要的只是比较网址?比如 index.php?price=100&size=100 和 index.php?price=150&size=200 有什么区别? 【参考方案1】:

使用 fgetcsv (http://php.net/fgetcsv) 读取 CSV 文件,而不是普通的文件方法。您将获得数组格式,并且从您的 URL 查询字符串中进行比较会更容易。

【讨论】:

请阅读我的帖子,获取值不需要 csv 函数,我需要将此值与来自 url 的值进行比较 @user3626084:阅读链接的手册页:使用正确的工具来完成这项工作!您正在读取 csv 文件,请使用专门为该类型文件创建的函数!【参考方案2】:

这是基于我了解您真正想要的。

$link1 = "index.php?price=150&size=200";
$link2 = "index.php?price=100&size=100";

// separate the string by ampersand to get the get parameters.
$link1ParamsRaw = explode('&',substr(stristr($link1, '?'),1)); // the second param removes all strings from start to ?
$link2ParamsRaw = explode('&',substr(stristr($link2, '?'),1));

$link1Params = array();
$link2Params = array();

foreach($link1ParamsRaw as $param) 
    $param = explode('=',$param); // separate key from value                 
    $link1Params[$param[0]] = $param[1]; // assuming all keys have values


foreach($link2ParamsRaw as $param) 
    $param = explode('=',$param); // separate key from value                 
    $link2Params[$param[0]] = $param[1]; // assuming all keys have values


$differences = array_diff_assoc($link1Params, $link2Params);

var_dump($differences);

【讨论】:

以上是关于平面文件从数组中选择值的主要内容,如果未能解决你的问题,请参考以下文章

WooCommerce - 提交后检索选择框的正确数据值

Matlab3-D 网格中 2-D 选择的插值

从 S3 读取大型 JSON 文件 (3K+) 并从数组中选择特定键

从数组中选择一个随机值

从下拉列表中取消选择时,Jquery 从数组中删除值

从 Hive 数组中选择特定值