【发布时间】:2018-05-07 18:30:18
【问题描述】:
由于这个问题有一个很长的解释,我会问这个问题,然后有下面的解释 - 你可以通过内部数组键值对多维数组进行排序,还是有更好的方法来绕过排序键值将不可避免地重复的对,而不仅仅是使用数组?
我对 PHP 的使用基本不熟悉,想学习如何存储数据。
我制作的 非常 简单示例只是两个 HTML 表单输入,用于一个分数和一个名称以及一个 PHP 文件,用于处理要存储在纯 .txt 文件中的输入,该文件最初是编写的与模式
42|John
32|Jane
25|John
我能够成功地拆分数据,对其进行排序,添加新输入的值,然后将其全部存储回文本文件以显示在其他地方,使用名称作为键,分数作为值。
我做这一切只是为了意识到它只会存储排序并显示与每个名称关联的最后一个值(即)
42|John
32|Jane
25|John
将被排序到
32|Jane
25|John
因为你显然不能在一个数组中有两个相同的键,这是我完全忽略的。
目前我的解决方案是为每个名称/分数对设置一个唯一的额外数字,我在文本文件中将其格式化为
1|42|John
2|32|Jane
3|25|John
然后我使用这个 foreach 循环将它们拆分成一个多维数组
foreach($arr as $key => $value) {
$lineData = explode("|", $value);
$scores[$lineData[0]] = array($lineData[1] => $lineData[2]);
}
得到这个输出
Array
(
[1] => Array
(
[42] => John
)
[2] => Array
(
[32] => Jane
)
[3] => Array
(
[25] => John
)
)
这避免了覆盖任何重复的名称或分数,但让我处于无法(据我所知)使用arsort() 将数组从高到低排序的位置。
【问题讨论】:
-
旁注:您为什么不为此使用数据库有什么特别的原因吗?文件是很多工作。而你现在使用的可能不是很安全。那么,这是出于学术目的还是上线?
-
两件事:这是一个小型的学习项目,所以我很乐意做额外的工作来解决这个问题,我还没有找到任何关于如何开始使用数据库的帮助有任何意义@Fred-ii-
-
我曾经在一个项目中使用平面文件数据库,如果我使用的是实际的 (mysql) 数据库,我的生活会变得更轻松。学习(它)是必然的,这是我做过的最好的举动。我花了几个月的时间,但我在 Stack 和网络其他地方发现的许多问答中获得了很多经验。如果你有时间学习它,相信我你会(可能)希望你能早点学会它。我对数据库感到有点害怕,但很快就消失了。我不会骗你的。
-
据我所知,这些地方是我从mysqltutorial.org --- tutorialspoint.com/mysql --- siteground.com/tutorials/php-mysql/mysql 和 MySQL.com 官方网站 dev.mysql.com/doc/refman/5.7/en 那里学到的 --- 还有还有使用准备好的语句,你真的应该学习en.wikipedia.org/wiki/Prepared_statement,以帮助防止 SQL 注入。 P.s.:我还在学习 ;-) 也通过我的一些答案。
-
不客气,Zachary,享受学习;我做到了 :-) 干杯,慢慢来,你会到达那里的。
标签: php html arrays forms flat-file