【发布时间】:2015-08-17 14:17:26
【问题描述】:
在每一行的第一列中都有一个职位,即软件工程师,如果用户的职位与该行中的职位匹配,如果给定的 id 存在于 csv 中,则嵌套的 for 循环应检查该行的每一列该列的字符串。我在 PHP 中使用数组的工作不多,而且我在多维数组方面的大部分经验都在 Java 中,所以请原谅我以 Java 为主题的 PHP 代码:
$csv = read_csv('/filepath/tct.csv');
$csv_rows = 75;
for($i=1;$i<$csv_rows;$i++)
{
if(strtolower($user['user_pos']) == strtolower($csv[$i][0]))
{
for($j=1;j<sizeof($csv[$i]);j++)
{
if(array_search($user['id'], explode(",",$csv[$i][$j])))
{
return true;
}
}
}
}
不幸的是,我的 java 似乎无法正常工作,所有关于 PHP 多维数组的现有问题只会让我对 $key->$value 的讨论感到困惑。任何人都可以向我解释我需要做些什么调整才能使其正常工作吗?
【问题讨论】:
-
$key是数组的索引,$value是给定索引的值。 -
我不知道它是否会帮助你,但 PHP 数组开始像 Java 一样为 0。您所有的
for循环都开始为 1。我认为您应该执行for($i=1;$i<=$csv_rows;$i++)或for($i=0;$i<$csv_rows;$i++) -
我认为我可以从 1 开始,因为行的第一列中永远不会有 id 值(位置在那里)。至少,这是我的想法……我可能是错的。
-
如果你有 10 条记录,在 PHP 中,要遍历从 0 到 9 开始的所有元素。所以你可以做
$i=0 to $i<10或$i=1 to $i<=10。请注意<=,因为您似乎在每个循环中都缺少一个元素。我不知道你是否明白我的意思。您可以从 1 开始,但缺少一个元素,因为<10给您 9(因为整数) -
我明白这一点。如果我没记错的话,每行 [0] 应该 中的第一个值是一个位置(根据 csv 的格式),这在我的初始条件之外是无关紧要的.我只想检查该行中的 [1] 列及以后的列。
标签: php arrays csv multidimensional-array