csv文件:
1 George 32f755cdbac4a47155639ad6e338709e 21
2 John e473502522cd67ea3c6f58417f086e8d 22
3 Mike c2ed8899990f06d3740adfc49a41ebcb 23
4 Jack 5266e222c45ffa0ec01e82f72a1ba803 24<?php
// 内容输入到CSV中
function insertDataToCSV($handle, $file, $array) {
if (is_writable($file) && $handle != false) {
foreach ($array as $key => $value) {
fputcsv($handle, split(', ', $value));
}
return true;
}
else
return false;
}
/**
* 若$id为0表示输出所有内容,否则表示输出id为传递的数字的内容。若id不是数字类型或不存在此id号则出错
* @param Resource $handle
* @param int $id
* @return string|boolean
*/
function selectDataFromCSV($handle, $id) {
if (handle != false) { $csv_contents .= '<table border="1">';
while (($array = fgetcsv($handle)) != false) {
$csv_contents .= '<tr>';
foreach ($array as $i)
$csv_contents .= '<td>' . htmlentities($i) . '</td>';
$csv_contents .= '</tr>';
}
$csv_contents .= '</table>';
if (is_int($id) != false) {
if ($id == 0)
return $csv_contents;
else if ($id > ){
}
else {
return $csv_contents = ();
}
}
else {
echo 'id值必须是正整数值';
return false;
}
}
else
return false;
}
$arr = array(
1 => '1, George, '.md5('3322QQAA').', 21',
2 => '2, John, '.md5('QQAA2233').', 22',
3 => '3, Mike, '.md5('734905461').', 23',
4 => '4, Jack, '.md5('164509437').', 24',
);
$file = 'aa.csv';
$handle = fopen($file, 'r');
/*if (insertDataToCSV($handle, $file, $arr) != false) {
echo '文件可写!';
}
else
echo '文件不可写!';*/
if (($csv = selectDataFromCSV($handle, 3)) != false)
echo $csv;
else
echo '文件不可读!';
fclose($handle);
?>
这是我自己写的模拟MYSQL输出的例子,我想要通过$id(即csv文件的id号)输出相应的行内容?即模拟MYSQL中的select * from 表名 where id = 3;想到这里就想不下去了,所以尚未完整,是不是我的思维出错?应该怎么写呢?phpsqlcsvfilefunction
1 George 32f755cdbac4a47155639ad6e338709e 21
2 John e473502522cd67ea3c6f58417f086e8d 22
3 Mike c2ed8899990f06d3740adfc49a41ebcb 23
4 Jack 5266e222c45ffa0ec01e82f72a1ba803 24<?php
// 内容输入到CSV中
function insertDataToCSV($handle, $file, $array) {
if (is_writable($file) && $handle != false) {
foreach ($array as $key => $value) {
fputcsv($handle, split(', ', $value));
}
return true;
}
else
return false;
}
/**
* 若$id为0表示输出所有内容,否则表示输出id为传递的数字的内容。若id不是数字类型或不存在此id号则出错
* @param Resource $handle
* @param int $id
* @return string|boolean
*/
function selectDataFromCSV($handle, $id) {
if (handle != false) { $csv_contents .= '<table border="1">';
while (($array = fgetcsv($handle)) != false) {
$csv_contents .= '<tr>';
foreach ($array as $i)
$csv_contents .= '<td>' . htmlentities($i) . '</td>';
$csv_contents .= '</tr>';
}
$csv_contents .= '</table>';
if (is_int($id) != false) {
if ($id == 0)
return $csv_contents;
else if ($id > ){
}
else {
return $csv_contents = ();
}
}
else {
echo 'id值必须是正整数值';
return false;
}
}
else
return false;
}
$arr = array(
1 => '1, George, '.md5('3322QQAA').', 21',
2 => '2, John, '.md5('QQAA2233').', 22',
3 => '3, Mike, '.md5('734905461').', 23',
4 => '4, Jack, '.md5('164509437').', 24',
);
$file = 'aa.csv';
$handle = fopen($file, 'r');
/*if (insertDataToCSV($handle, $file, $arr) != false) {
echo '文件可写!';
}
else
echo '文件不可写!';*/
if (($csv = selectDataFromCSV($handle, 3)) != false)
echo $csv;
else
echo '文件不可读!';
fclose($handle);
?>
这是我自己写的模拟MYSQL输出的例子,我想要通过$id(即csv文件的id号)输出相应的行内容?即模拟MYSQL中的select * from 表名 where id = 3;想到这里就想不下去了,所以尚未完整,是不是我的思维出错?应该怎么写呢?phpsqlcsvfilefunction
然后正则表达式分解分析sql语句.最后调用相应的函数,
我的意思是怎么实现selectDataFromCSV()里面的根据传递的$id参数选择输出相应id值的那行内容?即若传递3,则只输出ID值为3的内容:3 Mike c2ed8899990f06d3740adfc49a41ebcb 23
function find($fileName,$id,$all=false){
$file = fopen($fileName,"r");
$data = fgetcsv($file);
if($all){
return $data;
}
$result = array();
foreach($data AS $key=>$value){if($id == $value[0]){
$result[] = $value;
break;
}
return $result;
}
}没有运行,有些判断就省了,不知道是不是你要的
function insertDataToCSV($handle, $file, $array) {
if (is_writable($file) && $handle != false) {
foreach ($array as $key => $value) {
fputcsv($handle, split(', ', $value));
}
return true;
}
else
return false;
}
/**
* 若$id为0表示输出所有内容,否则表示输出id为传递的数字的内容。若id不是数字类型或不存在此id号则出错
* @param Resource $handle
* @param int|float $id
* @return string|boolean
*/
function selectDataFromCSV($handle, $id) {
if (handle !== false) {
if (is_numeric($id) == false)
echo '输入的ID值必须为数字类型!';
$csv_contents .= '<table border="0">';
while (($array = fgetcsv($handle)) != false) {
//var_dump($array); // 用于测试
$csv_contents .= '<tr>';
foreach ($array as $i) {
$pattern = '/[1-9]?/';
if (preg_match_all($pattern, $array[0])) {
if ($id > $array[0] || $id < 0)
$stat = 'NoRanges';
elseif ($id == 0) {
$csv_contents .= '<td>'.htmlentities($i).'</td>';
$stat = true;
}
elseif ($array[0] == $id) {
$csv_contents .= '<td>'.$i.'</td>';
$stat = true;
}
}
else {
echo '数据库中的ID值有非数字类型!';
}
}
$csv_contents .= '</tr>';
}
if ($stat === 'NoRanges')
echo '不存在此ID号!';
$csv_contents .= '</table>';
return $csv_contents;
}
else
return false;
}
$arr = array(
1 => '1, George, '.md5('3322QQAA').', 21',
2 => '2, John, '.md5('QQAA2233').', 22',
3 => '3, Mike, '.md5('734905461').', 23',
4 => '4, Jack, '.md5('164509437').', 24',
);
$file = 'aa.csv';
$handle = fopen($file, 'a+');
/*if (insertDataToCSV($handle, $file, $arr) != false) {
echo '文件可写!';
}
else
echo '文件不可写!';*/
if (($csv = selectDataFromCSV($handle, 3)) != false)
echo $csv;
else
echo '文件不可读!';
fclose($handle);
?>