Jump to content
php.lv forumi

Nevaru atrast kur ir kļūda! Paša veidota konvertācijas funkcija


bobsters

Recommended Posts

Lieta tāda! Ja piemēram es ievadu convert_month("01",1) tad vins pareizi izvada ka ir "Janvāris",

bet kad pamainu uz convert_month("Februāris",0) tad vins tapat izvada Februaris, bet kad

ieraksts convert_month("Janvāris",0) vins izvada ka ir 01-ais menesis!

nevaru saprast kur ir kluda!

function convert_month($month,$type=1){


   	$month_w=array("Janvāris"=>"01",
             	"Februāris"=>"02",
             	"Marts"=>"03",
             	"Aprīlis"=>"04",
             	"Maijs"=>"05",
             	"Jūnijs"=>"06",
             	"Jūlijs"=>"07",
             	"Augusts"=>"08",
             	"Septembris"=>"09",
             	"Oktobris"=>"10",
             	"Novembris"=>"11",
             	"Decembnris"=>"12");


       $month_cipariem=array("01"=>"Janvāris",
                                      		"02"=>"Februāris");  

   	if ($type==1){

	foreach($month_w as $menesis=>$menesis_skaitlis)
       {    
	return str_replace($menesis_skaitlis,$menesis,$month);
   	}

  	}

  	else
  	{
  		if ($type==0)
  		{

foreach ($month_cipariem as $menesis_cip=>$menesis_v)
{
return str_replace($menesis_v,$menesis_cip,$month);
}
  		}
  	}



}

 

P.s. saprotu ka iespejams eju no Rigas uz jurmalu caur Daugavpili, bet tomer - neko nevar iemacities ja nedari un nekludies! Tapec vnk gribu saprast kapec vins sadus pekstinus dara!

Un visticamākais ir tas ka kļūda ir man acu priekšā,tikai es to nevaru saskatīt :(

Edited by bobsters
Link to comment
Share on other sites

function getMonthName($month){
 $months = array(
"Janvāris", "Februāris", "Marts", "Aprīlis", "Maijs", "Jūnijs", "Jūlijs",
"Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"
  );
 if(is_numeric($month)){
  return array_key_exists($month - 1, $months) ? $months[$month - 1] : false;
 }
 //Ja ir vārdisks, atgriežam skaitlisko
 $month = mb_strtolower(trim($month), "utf-8");
 foreach($months as $key => $item){
  $item = mb_strtolower($item, "utf-8");
  if($item === $month){
return $key + 1;
  }
 }
 return false;
}

Link to comment
Share on other sites

Paldies! es jau pats beigas sapratu, ka viņš izvada tikai pirmo pareizu! pārējo visu atkārto!

Bet nepaspēju forumā uzrakstīt, ka problēma atrisināta :)

Tagad palabosu skriptu! Un tad velak padosu apskatei un kritikai :)

Edited by bobsters
Link to comment
Share on other sites

Nu tad beidzot esu pabeidzis savu Konvertacijas Funkciju!

Nododu apskatei! Iespejams ka daudzi uzskatis ka tas nav bijis vajadzigs - tomer man tas bija trenins!

Skaitisanu ievietoju funkcija jo izmantojos date(m) tiek padots menesis ka 01 utt

bet array indexi nesakas ar 0 (ka jau zinat)

tad lidz ar to tas tiek parbaudits vai skaitlis nesakas ar 0 - ja sakas tad tas tiek atmests!

Velak japalabo un japieliek klat vel sadalas ka konvertejot uz skaitli ja nepieciesams vins pievieno 0 klat

function convert_month($month,$type=1,$addzero=0){
      		$menesis=array("Janvāris","Februāris","Marts","Aprīlis",
               	"Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris",
               	"Novembris","Decembris");

      		if ($type==1){
               	//parbauda vai skaitlis ir divciparu

               	if (strlen($month)==2){

                		//ja skaitlis ir divciparu skaitlis tad nakosais
                		//kas tiek parbaudits ir tas vai skaitlis nesakas ar nulli
                		//jo pie date('m') tiek izvadits 01-ais menesis utt

                   	if (strstr($month,"0")==TRUE){
                       	//ja skaitlis tomer sakas ar nulli tad
                       	//atmetam pirmo skaitli un paliek 1
                       	$month=substr($month,1,1);

                       	//atgriezam menesa vertibu
                       	//cerams ka pasi saprotat kapec ir $month-1
                       	//ja ne tad parbaudiet
                       	return $menesis[$month-1];

                   	}

                   	else
                   	{
                       	//ja nav atrasta pirma nulle tad izvadam menesi
                       	return $menesis[$month-1];



                   	}
               	}


      		}

               	// un te parveidosim atpakal uz vārdisko vertibu
             	if ($type==0){


            		$month=array_search($month,$menesis);



                		return $month+1;

            		}

             	}







//echo convert_month("Janvāris",0);
//echo "<br>";
echo "01 - ".convert_month("01",1);
echo "<hr><br>";
echo "Februāris - ".convert_month("Februāris",1);
echo "<hr><br>";
echo "Februāris - ".convert_month("Februāris",0);
echo "<hr><br>";
echo "09 - ".convert_month("09",1);
echo "<hr><br>";
echo "12 - ".convert_month("12",1);
echo "<hr><br>";
?>

Edited by bobsters
Link to comment
Share on other sites

Pametīšu domu.

 

$i = (int)"01"; $i ir 1

$i = (int)"05"; $i ir 5

$i = (int)"Janvāris"; $i ir 0

$i = (int)"Marts" $i ir 0

 

Mja tiešām smieklīgi! Tā biju aizrāvies ka par to nemaz neiedomājos :D

loti daudzas rindinas liekas :D

Bet tomer - prakse izmantot!

Kad kaut kur citur vajadzēs izmantot tad būs vieglāk :D

Link to comment
Share on other sites

Pārkonvertē mēnesi uz skaitli ar (int), pārbaudi - ja tas ir "0" tad mēnesis visdrīzāk bija vārdisks.

Ja skaitlis ir >=1 un <= 12, tad tas ir kārtas skaitlis.

 

Tad attiecīgi tik paņem no masīva vai pēc indeksa, vai ej cauri masīvam un meklē vārdisko mēnesi. Tikai nemaizmirsti pataisīt vienādā reģistrā - piemēram, mazajiem burtiem, jo "Janvāris" !== "JANVĀRIS"

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...